在Cocoa上,为了确保视图具有自己的层,应该将wantsLayer设置为true。
与wantsLayer 和 wantsUpdateLayer 的确切区别是什么?
据我所理解,wantsLayer导致视图开始使用层,而wantsUpdateLayer则改变视图的绘制方式(通过调用updateLayer而不是draw)。
将wantsLayer设置为true而不将wantsUpdateLayer设置为true的用途是什么?
如果wantsLayer设置为true,还需要将wantsUpdateLayer设置为true吗?
我应该在哪里与视图层交互?
您应该只与updateLayer函数中的层进行交互,这是正确的吗?这是否适用于CALayer的每个属性和方法?例如,如果我想添加一个子层,这是否也应该在updateLayer中完成?
此外,编辑最新的AppKit版本说明如下:
针对macOS 10.14的应用程序应该更喜欢wantsUpdateLayer属性而不是wantsLayer属性。
那么,这是否意味着在macOS 10.14上,如果您已经在使用wantsUpdateLayer,那么实际上不需要使用wantsUpdateLayer吗?
发布于 2018-08-17 16:36:46
wantsLayer属性指示您的NSView是否将由一个层支持。默认情况下,NSViews是而不是默认的层。因此,如果您需要一个图层(例如,对于动画),您需要指定它。
wantsUpdateLayer是非常不同的。NSView可以通过两种(独占)方式更新它们的内容:
默认情况下,wantsUpdateLayer返回NO,因此调用drawRect:。但是如果您将wantsUpdateLayer设置为返回YES (如果您的视图是层支持的),那么updateLayer将被调用。
更新程序可以比drawRect快得多:如果您可以通过修改层属性来更新视图内容的话
因此,要回答你们的问题:
https://stackoverflow.com/questions/51859378
复制相似问题