CALayer setContents不适用于10.5

时间:2012-08-06 14:58:08

标签: objective-c cocoa calayer nswindow

我有以下代码

[[mWindow contentView] setWantsLayer:YES]; //mWindow is NSWindow object
[[mWindow contentView] layer].contents = [NSImage imageNamed:@"1.png"];  

此代码在10.6上运行正常,但在10.5 mWindow上没有显示任何内容。为什么呢?

NSlog(@"%@",[[mWindow contentView] layer].contents)  //10.5
NSImage 0x15d030 Size={565, 305} Reps=(
    NSBitmapImageRep 0x166400 Size={565, 305} ColorSpace=NSCalibratedRGBColorSpace BPS=8 BPP=24 Pixels=565x305 Alpha=NO Planar=NO Format=0
)

1 个答案:

答案 0 :(得分:4)

因为您无法在10.5中将NSImage传递给setContents:。请参阅CALayer的文档。

  

contents提供图层内容的对象。   动画。

     

@property(retain)id contents讨论默认值   财产是零。当此属性为nil时,图层内容为   呈现给图层管理的后备存储。

     

您可以将此属性设置为CGImageRef以显示其内容   图像代替图层的内容。 (在OS X 10.6及更高版本中,   您也可以将其设置为NSImage对象。)为此分配图像   属性用图像替换图层自己的后备存储   内容。

     

可用性适用于OS X v10.5及更高版本。另见@property   contentsRect相关示例代码LightTable在CALayer.h中声明