有人见过那些 Interface Builder 属性“不透明”和“清除图形上下文”的工作吗?
Posted
技术标签:
【中文标题】有人见过那些 Interface Builder 属性“不透明”和“清除图形上下文”的工作吗?【英文标题】:Have someone ever seen those Interface Builder properties 'Opaque' and 'Clears Graphics Context' work? 【发布时间】:2017-04-10 10:12:43 【问题描述】:我正在扫描我的整个项目,禁用任何可以禁用的东西以加速应用程序。例如,不需要响应触摸的视图的用户交互属性等等。我知道收益将是最小的,但无论如何,请允许我这样做。 ????
看看我可以关闭哪些东西,我在所有视图中都看到了这些名为 Opaque
和 Clears Graphics Context
的属性,我早就知道了。
我从 2008 年开始为 ios 开发,自创建故事板以来,最初使用 Interface Builder 以编程方式和广泛地创建所有内容。
话虽如此,我意识到我从未见过这些属性 Opaque
或 Clears Graphics Context
产生任何差异,尽管它们处于状态。
例如:我现在创建了这个UIButton
,它使用背景图像。图像有一个半不透明的阴影。我将按钮的Opaque
和Clears Graphics Context
属性设置为开/关,在Interface Builder 上没有区别,在应用运行时也没有区别。
我在理论上知道 Apple 对这些属性的说法,但现在回想起来,我意识到我从来没有看到它们中的任何一个产生任何差异,尽管它们处于状态,即使当我过去以编程方式创建视图时也是如此。
你们能举一些这些属性的状态会产生影响的代码示例吗?
【问题讨论】:
opaque
视图绘制速度更快,因为不需要合成。这对于静态视图几乎没有区别,但在 tableviews/scrollviews/collectionviews 或在视图必须“移动”的动画中,这可能是 60fps 和性能不佳之间的区别。 Apple 在过去的免费 WWDC 性能视频中涵盖了这个主题。例如,UIVisualEffectViews
透明且背景模糊,可能会对性能造成很大影响。
>这对静态视图几乎没有什么影响……我想说根本没有区别。您为什么不将此评论作为您的答案,以便我接受?
我会把它作为答案发布,但恐怕我没有关于 Clears Graphics Context
的任何信息。
【参考方案1】:
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;包括使用工具调试应用以获得更好性能的示例)【讨论】:
太棒了! ! !以上是关于有人见过那些 Interface Builder 属性“不透明”和“清除图形上下文”的工作吗?的主要内容,如果未能解决你的问题,请参考以下文章
Interface Builder IB - 导航控制器,跳过视图
如何在 Interface Builder 中使用自定义 UIButton 类别?
Interface Builder PREVIEW使用IBDesignable和核心图形(drawrect)?
IOS Interface Builder - 在单个视图控制器场景中管理多个视图