UITableViewCell drawRect() 重写使设备非常慢(CPU 使用高峰)
UITableViewCell drawRect() Override Makes Device Really Slow (CPU Usage Spike)
这几乎是我的问题。我想在 table 视图中创建圆形的普通单元格。我在 TableViewCell
class 中覆盖了 drawRect(frame: CGRect)
,但是当显示单元格时,设备(模拟器也是)冻结了大约 1 秒并且调试器在 CPU 中显示了一个尖峰使用率达到 75%。
并不是说它可能有任何用处,但这是我的代码:
override func drawRect(rect: CGRect) {
frame.origin.x = 10
frame.size.width -= 20
}
那么有没有更有效的easier/MUCH/"legal"(有人说覆盖 drawRect 被认为 "hacky")简单地使每个单元格比屏幕窄的方法?
您实际上不能使用 drawRect
修改视图的框架。 drawRect
只是给了你一个在给定的框架内画画的机会。
UITableViewCell
的实际框架由 UITableView
通过其宽度和 heightForRowAtIndexPath:
方法管理。此外,table 视图在缓存和重用单元格方面非常有效。除非你在屏幕上显示 1000 的单元格,否则你不必担心绘图的效率。
我认为您应该向单元格的 contentView
添加一个子视图,并将它的框架设置为插入到单元格中。这可以在自定义单元格 xib 中使用自动布局来完成,或者在 cellForRowAtIndexPath:
.
中手动完成
这几乎是我的问题。我想在 table 视图中创建圆形的普通单元格。我在 TableViewCell
class 中覆盖了 drawRect(frame: CGRect)
,但是当显示单元格时,设备(模拟器也是)冻结了大约 1 秒并且调试器在 CPU 中显示了一个尖峰使用率达到 75%。
并不是说它可能有任何用处,但这是我的代码:
override func drawRect(rect: CGRect) {
frame.origin.x = 10
frame.size.width -= 20
}
那么有没有更有效的easier/MUCH/"legal"(有人说覆盖 drawRect 被认为 "hacky")简单地使每个单元格比屏幕窄的方法?
您实际上不能使用 drawRect
修改视图的框架。 drawRect
只是给了你一个在给定的框架内画画的机会。
UITableViewCell
的实际框架由 UITableView
通过其宽度和 heightForRowAtIndexPath:
方法管理。此外,table 视图在缓存和重用单元格方面非常有效。除非你在屏幕上显示 1000 的单元格,否则你不必担心绘图的效率。
我认为您应该向单元格的 contentView
添加一个子视图,并将它的框架设置为插入到单元格中。这可以在自定义单元格 xib 中使用自动布局来完成,或者在 cellForRowAtIndexPath:
.