我有以下代码
[[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
)
答案 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中声明