我正在扫描我的整个项目,禁用所有可以禁用的内容以加快应用程序的速度。例如,视图的用户交互属性不需要响应触摸和类似的事情。我知道收益将是最小的,但是无论如何,请允许我这样做。 😃

看一下我可以关闭的东西,我在所有视图上都看到了很长一段时间都知道的名为OpaqueClears Graphics Context的属性。

我从2008年开始为iOS开发,自创建情节提要板以来,最初是使用Interface Builder以编程方式广泛地创建所有内容。

话虽如此,我已经意识到,尽管它们的状态不同,但我从未见过这些属性OpaqueClears Graphics Context根本不会产生任何差异。

例如:我现在使用背景图像创建了这个UIButton。图像具有半透明阴影。我将按钮的OpaqueClears Graphics Context属性设置为开/关,并且在Interface Builder上没有区别,在应用程序运行时也没有区别。

我知道苹果从理论上说过这些属性,但是现在考虑它们,我意识到即使我曾经以编程方式创建视图,尽管它们处于状态,但我从未见过它们有任何区别。

你们可以举出一些示例代码来说明这些属性的状态吗?

最佳答案

opaque视图可以更快地绘制,因为不需要合成。对于静态视图,这几乎没有什么区别,但是对于UITableView s / UIScrollView s / UICollectionView s或在动画中,视图必须“移动”,这可能是60fps和性能不佳之间的区别。

Apple在过去的有关性能的免费WWDC视频中已经介绍了此主题。例如,UIVisualEffectViews是透明的且背景模糊,可能会导致性能大幅下降。

以下是指向参考图形/ UI性能的免费WWDC视频的链接; WWDC肯定有更多CAAnimation / SpriteKit视频,但以下视频专门介绍了性能。

WWDC 2012:

  • 优化2D图形和动画性能:https://developer.apple.com/videos/play/wwdc2012/506/(有关opaque的讨论;包括使用工具调试应用程序以提高性能的示例)
  • iOS应用程序性能:图形和动画:https://developer.apple.com/videos/play/wwdc2012/238/(平滑的动画和滚动)

  • WWDC 2014:
  • iOS应用程序的高级图形和动画:https://developer.apple.com/videos/play/wwdc2014/419/(UIVisualEffects;包括使用工具调试应用程序以提高性能的示例)
  • 10-08 01:02