iOS 设置TableViewCell 同时设置圆角和阴影

Simulator Screen Shot - iPhone XS Max - 2019-06-25 at 15.44.42.png

cell四周圆角,阴影为了能明显设置了蓝色(项目主色调是蓝色)。

在自定义cell.m中实现

- (UIView *)bgView{
    if (!_bgView) {
        _bgView = [[UIView alloc] init];
        _bgView.layer.cornerRadius = 8.0f;
        _bgView.layer.masksToBounds = YES;
    }
    return _bgView;
}
在系统的setFrame方法中设置backgroudView的frame
- (void)setFrame:(CGRect)frame{
    frame.origin.x = margin;
    frame.size.height -= 2*margin;
    frame.size.width -= 2*margin;
    [super setFrame:frame];
    
    self.backgroundView.frame = self.bounds;
}
在cell的初始化方法里,将backgroudView设置为cell的backgroundView
并且设置了cell的阴影
    self.backgroundView = self.bgView;
    self.layer.shadowOffset = CGSizeMake(margin, margin);
    self.layer.shadowOpacity = 0.5f;
    self.layer.shadowColor = KMAINCOLOR.CGColor;
在tableView的代理方法中,实现以下方法:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
    cell.backgroundColor = [UIColor clearColor];
    YPHomePageCell *myCell = (YPHomePageCell *)cell;
    myCell.backgroundView.backgroundColor = [UIColor whiteColor];
}

具体使用方法如下图:
屏幕快照 2019-06-25 下午3.51.49.png

注意:因为阴影部分是占Cell高度的(如果不设置阴影下_tableView.rowHeight = 100.f,那么设置阴影后要将_tableView.rowHeight = 100.f+2*margin),也就是说设置阴影后,阴影部分高度加cell高度等于rowHeight

你可能感兴趣的:(iOS 设置TableViewCell 同时设置圆角和阴影)