如何省略UITableViewCell的[super layoutSubviews]调用?

时间:2012-02-11 12:34:12

标签: ios uitableview

我有一个非常复杂的UITableViewCell子类,我在Instruments中发现[super layoutSubviews]调用在滚动表视图时消耗了5%的运行时间。所以我尝试省略[super layoutSubviews]调用,因为我自己布局了所有子视图。它确实给了我性能提升。但是,我发现如果没有[super layoutSubviews]调用,按钮等交互式子视图就不再接收触摸事件。

所以我的问题是如何在[super layoutSubviews]子类中省略UITableViewCell调用以获得性能提升而不会将触摸事件传递到子视图?

2 个答案:

答案 0 :(得分:0)

您是否尝试枚举子视图并将userInteractionEnabled设置为YES?仍然是一种黑客,但如果真的是唯一缺少的东西,它应该有效。

祝你好运,

达明

答案 1 :(得分:0)

最后跟踪了它。这是因为cell.contentView.frame是(0,0,320,44)而没有调用[super layoutSubviews]并且边界不够大(具体地说,高度44不够高)以包围所有交互式子视图。根据{{​​1}}的文件:

  

接收器范围之外的点永远不会被报告为   点击,即使他们实际上位于接收者的子视图之一。   如果当前视图的clipsToBounds属性设置为,则会发生这种情况   NO和受影响的子视图超出了视图的范围。

这就是确切的情况。