macos - NSView的wantLayer表现

标签 macos cocoa nsview appkit

如果我创建一个空白的 Mac XCode 项目并在主窗口中并排布局 500 个简单的 NSView 对象,它的加载速度非常快。如果我在每个 subview 上设置 wantsLayer=YES,性能会急剧下降,下降几秒。为什么从概念上讲是这样的?看起来层会比常规的旧 NSView 更快而不是更慢。

最佳答案

通过分层支持如此多的 View ,您给系统带来了更多的工作要做。图层支持允许图形加速(用于绘图),但它给布局之类的事情增加了一些开销,更不用说只是创建它们并将它们放在屏幕上。如果使用得当,这并不是什么大问题。

通常,如果您要同时在屏幕上管理如此多的“事物”,那么您将拥有一个由层支持的托管 View 来管理其自己的子层树。 “但是基于 View 的 TableView 呢?”你问。诡计,诡计,我说! TableView 实际上并不保留它们管理的所有单元格 View ;他们有效地重用它们,仅保留足以代表屏幕上的内容和/或周围的动画的内容。

所以我想说这并不是一个真正的问题,因为从一开始就抛出 500 多个图层支持的 View 来进行布局和绘图并不是一个特别好的方法。 :-)

关于macos - NSView的wantLayer表现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30041190/

相关文章:

iphone - 向 UIButton 添加导出

cocoa - nssplitview 以编程方式在顶部添加 nsview

xcode - cocoa - 可视化编辑/设计 NSView

java - 无法在 mac OS X El Capitan 上使用 R 中的 FSelector 包

objective-c - 测试屏幕保护程序是否正在运行或工作区是否已锁定

macos - 系统是否支持带有红色关闭按钮的 HUD 样式窗口?

linux - "home"- 终端中的字符串(?)已更改

macos - NSTableCellView 中具有绑定(bind)的自定义 View

iphone - 在没有 Three20 的 URL 系统的情况下使用 TTPhotoViewController?

objective-c - 在加载的 View 中选择一个控件