我在 UIScrollView
上有几个 UIButton
。我希望按钮具有圆角,因此我对每个按钮调用 maskToBounds:
。当我这样做并在设备上运行时,滚动帧速率非常糟糕(它在模拟器上运行良好)。关于解决此问题的任何想法吗?
最佳答案
通过调用 maskToBounds:,您会导致 View 在屏幕外合成,这会大大减慢速度。您正在渲染自定义按钮图像吗?如果是这样使用UIImage -stretchableImageWithLeftCapWidth:topCapHeight:图像的最小宽度是包含其圆边的。这使得 GPU 能够以最有效的方式处理图像的拉伸(stretch),同时仍然为您提供由图像制成的按钮。 WWDC 2011 视频中有一个关于在 UIKit 中绘图的 session - 请观看,因为它正好解决了这个问题,以及您可能遇到的其他一些问题。
一些替代方法:
- Tweeties implementation of fast scrolling ,通过手动绘制所有内容
- Matt Gallaghers implementation of custom drawing 。这是我使用的方法,因为它很容易维护
关于objective-c - maskToBounds :YES affecting scroll performance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6472899/