gpt4 book ai didi

iphone - UITableView使用CALayer + mask的滚动性能

转载 作者:行者123 更新时间:2023-12-03 18:56:57 24 4
gpt4 key购买 nike

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

详细信息:

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

自定义切换控件扩展了 UIButton,它的层有两个组件 - 一个 UIImageView,其中包含切换的滑动“开关”部分和一个用作 mask 的拉长椭圆,背景绘制在层后面 -drawRect:

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

最佳答案

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

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

关于iphone - UITableView使用CALayer + mask的滚动性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2595267/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com