有没有人见过那些界面生成器属性'Opaque'和'Clears Graphics Context'工作?



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

看看我可以关闭哪些东西,我看到这些属性称为OpaqueClears Graphics Context,我早就知道了,在所有视图上。

我从 2008 年开始为 iOS 开发,自创建故事板以来,最初使用界面生成器以编程方式广泛创建所有内容。

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

例如:我现在创建了这个使用背景图像的UIButton。图像具有半不透明的阴影。我设置了按钮的OpaqueClears Graphics Context属性打开/关闭,界面生成器上没有区别,应用程序运行时也没有区别。

我知道苹果在理论上说这些属性是什么,但现在想想它们,我意识到我从未见过它们中的任何一个产生任何差异,尽管它们的状态,即使我曾经以编程方式创建视图。

你们能举一些代码的例子,这些属性的状态会产生影响吗?

opaque视图绘制速度更快,因为不需要合成。这对于静态视图几乎没有区别,但在UITableViews/UIScrollViews/UICollectionViews 或视图必须"移动"的动画中,这可能是 60fps 和性能不佳之间的区别。

苹果在过去关于性能的免费WWDC视频中已经涵盖了这个话题。例如,UIVisualEffectViews是透明的,并且模糊了背景,可能会导致很大的性能影响。

以下是参考图形/UI性能的免费WWDC视频的链接;肯定有更多的WWDCCAAnimation/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;包括使用仪器调试应用程序以获得更好性能的示例)

最新更新