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上
圆角正常展示。