ios - 有人见过 Interface Builder 属性 'Opaque' 和 'Clears Graphics Context' 起作用吗?

标签 ios iphone uiview uibutton

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

看看我可以关闭哪些东西,我在所有 View 上看到了这些名为 OpaqueClears Graphics Context 的属性,我已经知道很长时间了。

我从 2008 年开始为 iOS 进行开发,自 Storyboard创建以来,最初以编程方式并广泛使用 Interface Builder 创建了所有内容。

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

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

我知道苹果在理论上对这些属性的说法,但现在想想它们,我意识到我从未见过它们中的任何一个产生任何差异,无论它们的状态如何,即使当我过去以编程方式创建 View 时也是如此。

你们能否给出一些代码示例,其中这些属性的状态会产生影响?

最佳答案

不透明 View 的绘制速度更快,因为不需要合成。这对于静态 View 几乎没有什么区别,但在 UITableViews/UIScrollViews/UICollectionViews 或动画中, View 必须“移动”,这可以是60fps 和较差性能之间的区别。

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

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

2012 年全局开发者大会:

2014 年全局开发者大会:

关于ios - 有人见过 Interface Builder 属性 'Opaque' 和 'Clears Graphics Context' 起作用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43320469/

相关文章:

ios - 获取 GeoFire 中特定范围内的所有对象

objective-c - 使用 popViewController Animated 时调用 viewDidLoad

iphone - 图像并排在数组 xcode 中(在 UITableViewCell 中)

ios - cgcontext 旋转矩形

ios - 无法访问子文件夹中的所有文件

iphone - NSMutableURLRequest 发送部分帖子正文

iphone - iOS 上的密码编码和解码

ios - View 在 iPhone X 横向模式下看起来不正确

ios - 使用 tableHeaderView 中的 UIView 创建 UISearchBar 行为

ios - 圆特定的角并仅在特定的边上显示阴影