- masksToBounds属性问题
cell中设置阴影需要先设置 masksToBounds 为NO,
cell.layer.masksToBounds = NO;
cell.layer.masksToBounds = NO; 与clipsToBounds = YES;不共存,及这样设置,不能同时存在阴影跟圆角。
- 设置cell嵌入tableview的阴影+圆角
分两步设置,因为同一个view上同时设置阴影跟圆角会不生效,所以用两个笨办法,现在cell上设置背景的阴影,在设置table的圆角。
a. 重点是背景的 layer.masksToBounds = NO;
b . 设置背景tableview 要设置clipsToBounds = YES, layer.masksToBounds = YES;
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
self.selectionStyle = UITableViewCellSelectionStyleNone;
self.layer.masksToBounds = NO;
[self.contentView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.mas_equalTo(UIEdgeInsetsZero);
}];
[self.contentView addSubview:self.bgView];
[self.bgView addSubview:self.tableView];
[self.bgView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(kScreen_margin_common);
make.top.mas_equalTo(3);
make.bottom.mas_equalTo(-3);
make.right.mas_equalTo(-kScreen_margin_common);
}];
[self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(0);
make.top.mas_equalTo(0);
make.bottom.mas_equalTo(0);
make.right.mas_equalTo(0);
make.height.mas_equalTo(kScreen_height);
}];
}
return self;
}
- (AUView *)bgView {
if (!_bgView) {
_bgView = [[AUView alloc] initWithFrame:CGRectZero];
_bgView.layer.shadowColor = kGleColor_black_a2.CGColor;
_bgView.layer.shadowOpacity = 0.5;
_bgView.layer.shadowOffset = CGSizeMake(0, 0);
_bgView.layer.masksToBounds = NO;
}
return _bgView;
}
- (UITableView *)tableView {
if (!_tableView) {
_tableView = [[AUTableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain];
_tableView.delegate = self;
_tableView.dataSource = self;
_tableView.rowHeight = UITableViewAutomaticDimension;
_tableView.estimatedRowHeight = 119;
_tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
_tableView.separatorColor = kGleColor_gray_line;
_tableView.bounces = NO;
_tableView.scrollEnabled = NO;
_tableView.showsVerticalScrollIndicator = NO;
_tableView.showsHorizontalScrollIndicator = NO;
_tableView.layer.masksToBounds = YES;
_tableView.layer.cornerRadius = kScreen_radiu_common;
_tableView.clipsToBounds = YES;
if (@available(iOS 11.0, *)) {
_tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
} else {
if (@available(iOS 13.0, *)) {
_tableView.automaticallyAdjustsScrollIndicatorInsets = false;
}
}
}
return _tableView;
}
网友评论