0

我有以下代码

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

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

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
)
4

1 回答 1

4

因为你不能在 10.5 中传递一个NSImageto 。setContents:请参阅CALayer的文档。

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

@property(retain) id contents Discussion 该属性的默认值为nil。当此属性为 nil 时,图层内容将呈现给图层管理的后备存储。

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

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

于 2012-08-06T16:12:56.430 回答