我正在扫描我的整个项目,禁用所有可以禁用的内容以加快应用程序的速度。例如,视图的用户交互属性不需要响应触摸和类似的事情。我知道收益将是最小的,但是无论如何,请允许我这样做。 😃
看一下我可以关闭的东西,我在所有视图上都看到了很长一段时间都知道的名为Opaque
和Clears Graphics Context
的属性。
我从2008年开始为iOS开发,自创建情节提要板以来,最初是使用Interface Builder以编程方式广泛地创建所有内容。
话虽如此,我已经意识到,尽管它们的状态不同,但我从未见过这些属性Opaque
或Clears Graphics Context
根本不会产生任何差异。
例如:我现在使用背景图像创建了这个UIButton
。图像具有半透明阴影。我将按钮的Opaque
和Clears Graphics Context
属性设置为开/关,并且在Interface Builder上没有区别,在应用程序运行时也没有区别。
我知道苹果从理论上说过这些属性,但是现在考虑它们,我意识到即使我曾经以编程方式创建视图,尽管它们处于状态,但我从未见过它们有任何区别。
你们可以举出一些示例代码来说明这些属性的状态吗?
最佳答案
opaque
视图可以更快地绘制,因为不需要合成。对于静态视图,这几乎没有什么区别,但是对于UITableView
s / UIScrollView
s / UICollectionView
s或在动画中,视图必须“移动”,这可能是60fps和性能不佳之间的区别。
Apple在过去的有关性能的免费WWDC视频中已经介绍了此主题。例如,UIVisualEffectViews是透明的且背景模糊,可能会导致性能大幅下降。
以下是指向参考图形/ UI性能的免费WWDC视频的链接; WWDC肯定有更多CAAnimation
/ SpriteKit
视频,但以下视频专门介绍了性能。
WWDC 2012:
opaque
的讨论;包括使用工具调试应用程序以提高性能的示例)WWDC 2014: