我有一个NSView子类,并在initWithFrame方法中设置以下内容:
self.wantsLayer = YES;
self.layer.contents = [NSImage imageNamed:@"sprite-sheet"];
self.layer.contentsGravity = kCAGravityLeft;当我运行它时,我得到了预期的视觉效果.以及具有以下日志的崩溃:
**滥用NSImage和CALayer。contentsGravity离开了。它应该是一个调整大小,resizeAspect,或resizeAspectFill。
为什么?文档中没有其他值不应该被使用的迹象。
发布于 2014-03-10 22:10:46
实际上,您所看到的行为在文档中。它只是在NSImage文档中,而不是CALayer文档中(由我强调):
与CALayer对象一起使用图像 尽管可以将NSImage对象直接分配给CALayer对象的
contents属性,但这样做并不一定会产生最佳结果。您可以使用layerContentsForContentsScale:方法来获取可以用于层内容的对象,而不是使用图像对象。该方法创建的图像适合作为层的内容使用,并且支持该层的所有重力模式。相比之下,kCAGravityResize**,类只支持 **kCAGravityResizeAspect**,和**kCAGravityResizeAspectFill模式。
https://stackoverflow.com/questions/22311705
复制相似问题