UITableViewCell drawRect()覆盖使设备变得非常慢(CPU使用率高峰)

时间:2016-07-04 18:48:28

标签: swift uitableview drawrect cgrect

这几乎是我的问题。我想在表格视图中创建圆形普通单元格。我在drawRect(frame: CGRect)类中重写TableViewCell,但是当显示单元格时,设备(模拟器也)冻结约1秒钟,调试器显示CPU使用率达到75%。

不是说它可能有用,但这是我的代码:

    override func drawRect(rect: CGRect) {
    frame.origin.x = 10
    frame.size.width -= 20
}

那么有没有更容易/更有效/更合法的“(有人说覆盖drawRect被认为是”hacky“)简单地使每个单元格比屏幕更窄的方式?

1 个答案:

答案 0 :(得分:1)

您实际上不允许使用drawRect来修改视图的框架。 drawRect只是让您有机会在给定的框架内进行绘制。

UITableViewCell的实际框架由UITableView通过其宽度和heightForRowAtIndexPath:方法管理。此外,表视图在缓存和重用单元格方面非常有效。除非您在屏幕上显示1000个单元格,否则您无需担心绘图的效率。

我认为您应该在单元格的contentView中添加子视图,并将其框架设置为单元格的插图。这可以使用自定义单元格xib中的autolayout或cellForRowAtIndexPath:中的manaully来完成。