objective-c - maskToBounds :YES affecting scroll performance

标签 objective-c ios cocoa-touch uiscrollview uibutton

我在 UIScrollView 上有几个 UIButton。我希望按钮具有圆角,因此我对每个按钮调用 maskToBounds: 。当我这样做并在设备上运行时,滚动帧速率非常糟糕(它在模拟器上运行良好)。关于解决此问题的任何想法吗?

最佳答案

通过调用 maskToBounds:,您会导致 View 在屏幕外合成,这会大大减慢速度。您正在渲染自定义按钮图像吗?如果是这样使用UIImage -stretchableImageWithLeftCapWidth:topCapHeight:图像的最小宽度是包含其圆边的。这使得 GPU 能够以最有效的方式处理图像的拉伸(stretch),同时仍然为您提供由图像制成的按钮。 WWDC 2011 视频中有一个关于在 UIKit 中绘图的 session - 请观看,因为它正好解决了这个问题,以及您可能遇到的其他一些问题。

一些替代方法:

关于objective-c - maskToBounds :YES affecting scroll performance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6472899/

相关文章:

ios - 如何在 UIScrollView 的特定 subview 中禁用滚动

c++ - 从 C++ 方法调用 Objective-C 方法? [2]

ios - StoryBoard - UITabBarController + UINavigationController - 从一个导航 Controller 跳转到另一个

ios - 在哪里可以找到 iOS 7 的默认后退按钮 V 形图像?

iphone - 通过 UIAppearance 自定义 UIBarButtonItem 后 UIControlStateSelected 的按钮图像不起作用

ios - 重新启动 UIViewController 中的绘图和事件 (iOS)

cocoa-touch - 如何在iPhone的UIView上附加键值对?

ios - SpriteKit 游戏中的帧速率极慢

iphone - 如何使用 Phonegap 2.9 在 config.xml 中声明插件

iPhone:当应用程序关闭/在后台时如何设置应用程序徽章?