最近在工作中,UI要求给每个cell切圆角效果,在这里我在自定义cell里通过贝塞尔曲线给当前cell画了圆角的效果,本来以为很简单的问题,没想到加载cell的时候出现了卡顿的效果,也就是说切了圆角的cell都存在了卡顿,需要重新将tableview本身进行一次reloaddata后才能将不显示的界面显示出来。
如下图:(红色框中是切圆角的cell,分为左上右上,左下右下)
下图为不做reloaddata时候的效果图:
一开始以为是视图不加载的原因,在layoutIfNeeded()方法里捯饬,但是发现哪怕在cell里让视图立即加载,得到切圆角的cell也是不完整的。。
后来发现画圆角的代码里
1 | public func roundCorners(_ corners: UIRectCorner, radius: CGFloat) { |
这里需要传明确的长度和高度,而我被画的控件是用约束创建的,于是想到应该是第一次画圆角的时候,他获取到的frame应该为0,自然而然就不会去显示。
于是将控件用frame方式创建,果不其然,问题得到解决。