【问题标题】:UITableView scrolling performance with CALayer + maskUITableView 使用 CALayer + mask 的滚动性能
【发布时间】:2010-04-07 19:26:00
【问题描述】:

这不是一个真正的问题,因为我刚刚解决了这个问题,但我认为这个问题的性质对于许多 iPhone 开发人员来说都很常见,而且解决方案并不是很明显,所以我想分享我的经验。为了保持 StackOverflow 的“问题/答案”格式,我将把细节放入问题中,将我的解决方案放入答案中。

详情:

我有一个包含两个标签的单元格的表格视图和一个我从头开始组合在一起的自定义切换开关控件。如果我隐藏了切换控件,tableview 会像冠军一样滚动。然而,在显示切换控件的情况下,iPhone 3G 上的滚动非常不稳定/缓慢。我的 tableview 单元格没有透明组件(图层的蒙版除外),我正在重用单元格。

自定义切换控件扩展了 UIButton,它的图层有两个组件 - 一个 UIImageView 包含切换的滑动“开关”部分和一个用作遮罩的细长椭圆,背景在@987654321 中绘制在图层后面@。

我是如何解决的?很快就会有答案...

【问题讨论】:

    标签: iphone performance uitableview scroll


    【解决方案1】:

    我发现缓慢/不连贯的根源是在滚动时必须将图层与蒙版子图层重新合成。我想每次重新绘制屏幕时都必须重新绘制拨动开关。

    我的解决方案是隐藏切换开关图层/蒙版,除非它正在改变状态。当它完全处于打开或关闭位置时,我隐藏了拨动开关层并将其替换为拨动开关的图像。当用户触摸切换时,虚拟图像隐藏,实际的切换开关组件显示并执行相反状态的动画。动画结束后,我隐藏切换开关组件并显示虚拟图像,确保将图像更改为当前状态。这显着提高了滚动性能...我敢说它几乎与原生默认 tableview 单元格一样好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多