我正在扫描我的整个项目,禁用任何可以禁用以加快应用程序速度的内容。例如,不需要响应触摸之类的 View 的用户交互属性。我知道 yield 将是最小的,但无论如何,请允许我这样做。 😃
看看我可以关闭哪些东西,我在所有 View 上看到了这些名为 Opaque
和 Clears Graphics Context
的属性,我已经知道很长时间了。
我从 2008 年开始为 iOS 进行开发,自 Storyboard创建以来,最初以编程方式并广泛使用 Interface Builder 创建了所有内容。
话虽如此,我意识到我从未见过这些属性 Opaque
或 Clears Graphics Context
产生任何差异,无论它们的状态如何。
例如:我现在创建了这个使用背景图像的UIButton
。图像有半透明阴影。我将按钮的 Opaque
和 Clears Graphics Context
属性设置为开/关,在 Interface Builder 上没有区别,在应用程序运行时也没有区别。
我知道苹果在理论上对这些属性的说法,但现在想想它们,我意识到我从未见过它们中的任何一个产生任何差异,无论它们的状态如何,即使当我过去以编程方式创建 View 时也是如此。
你们能否给出一些代码示例,其中这些属性的状态会产生影响?
最佳答案
不透明
View 的绘制速度更快,因为不需要合成。这对于静态 View 几乎没有什么区别,但在 UITableView
s/UIScrollView
s/UICollectionView
s 或动画中, View 必须“移动”,这可以是60fps 和较差性能之间的区别。
Apple 在过去的免费 WWDC 性能视频中介绍了这个主题。例如,UIVisualEffectViews 是透明的并且模糊背景,可能会导致性能大幅下降。
以下是引用图形/UI 性能的免费 WWDC 视频的链接;肯定还有更多 WWDC CAAnimation
/SpriteKit
视频,但下面的视频专门介绍了性能。
2012 年全局开发者大会:
- 优化 2D 图形和动画性能:https://developer.apple.com/videos/play/wwdc2012/506/ (讨论
opaque
;包括使用仪器调试应用以获得更好性能的示例) - iOS 应用性能:图形和动画:https://developer.apple.com/videos/play/wwdc2012/238/ (流畅的动画和滚动)
2014 年全局开发者大会:
- 适用于 iOS 应用程序的高级图形和动画:https://developer.apple.com/videos/play/wwdc2014/419/ (UIVisualEffects;包括使用仪器调试应用程序以获得更好性能的示例)
关于ios - 有人见过 Interface Builder 属性 'Opaque' 和 'Clears Graphics Context' 起作用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43320469/