【发布时间】:2011-06-24 19:37:13
【问题描述】:
我在UIScrollView 上有几个UIButtons。我希望按钮有圆角,所以我在每个按钮上调用maskToBounds:。当我这样做并在设备上运行时,滚动帧率非常糟糕(它在模拟器上运行良好)。有关此问题的解决方法的任何想法?
【问题讨论】:
标签: objective-c ios cocoa-touch uiscrollview uibutton
我在UIScrollView 上有几个UIButtons。我希望按钮有圆角,所以我在每个按钮上调用maskToBounds:。当我这样做并在设备上运行时,滚动帧率非常糟糕(它在模拟器上运行良好)。有关此问题的解决方法的任何想法?
【问题讨论】:
标签: objective-c ios cocoa-touch uiscrollview uibutton
您正在通过调用 maskToBounds: 导致视图在屏幕外合成,这会大大减慢速度。您是否正在渲染自定义按钮图像?如果是这样,请将UIImage -stretchableImageWithLeftCapWidth:topCapHeight: 与包含其圆角边缘的最小宽度的图像一起使用。这允许 GPU 以最有效的方式处理图像的拉伸,同时仍然为您提供一个由图像制成的按钮。 WWDC 2011 视频中有一个关于在 UIKit 中绘图的视频 - 请注意,因为它完全解决了这个问题,以及您可能遇到的其他一些问题。
几种替代方法:
【讨论】: