iOS13上UITableViewCell设置圆角的一些事儿

UITableViewCell设置圆角的方法,百度搜索有很多文章介绍,本文只介绍实际开发中用到的方法和遇到的问题。

方法1:UI同学给一张小的圆角图,通过拉伸设置到cell上

          由于本人工程中的cell中的视图元素是可变的,cell的高度是可变的,用视图拉伸的方法会出现频繁拉伸,重置frame的情况,又考虑到包体积,能少加入一张图片就少加入一张图片,因此未采用。

方法2:直接设置cell

self.layer.cornerRadius =5; 

self.clipsToBounds = YES;

采用了这种方法。运行正常,暂无出现明显卡顿。

但是,苹果升级到了iOS13,发现在iOS3beta版本中,这种设置不起作用了。

经过查看视图层级和设置backgroundcolor等调试手段,发现,iOS13上设置cell不起作用了,首先,设置backgroundcolor不起作用,打印subviews也是空的。

猜测原因:

1.新系统bug,后续正式版本会修复,因为xcode11中的文档并未对cell的这些属性做 不再使用的  说明。

2.新系统的新规定,增强cell的安全性,不再支持直接操作cell,所有的操作都通过contentview来实现。

暂时的解决方案:

代码如下:

        self.backgroundView = [[UIView alloc] init];

        self.backgroundView.backgroundColor = [UIColorcolorWithHex:@"#f6f6f6"];

        //设置成透明色也不行

        self.contentView.backgroundColor= [UIColor colorWithHex:@"#ffffff"];

        self.contentView.layer.cornerRadius =12;

        self.contentView.layer.masksToBounds =YES;

发现了cell的backgroundView这个属性。backgroundView默认是和cell的frame保持一致的,既然设置cell不起作用,就在cell上创建了这个backgroundView(我的tableview 是 plain类型的),然后圆角设置放在了contentview上

圆角正常展示。

你可能感兴趣的:(iOS13上UITableViewCell设置圆角的一些事儿)