```CALayercontents```这类义有个一个属性contens,这个属性的类型被定义为id。在这种情况下你可以给他赋任何值 。但实践中 如果你给contens赋的不是CGimage ,那么你得到的图层将是空白的。
这是因为Mac OS的历史造成的 。在mac os开发中可以被赋值CGImage和NSImage类值。
实赋值类应该CGImageRef 他是一个指向CGimage结构的的指针.UIimage有一个CGimage属性,他返回"CGImageRef",这值赋值给CALayer的 contents。你将会编译错误。因为CGImageRef并不是一个真正的Cocoa对象,而是一个Core Foundation类型。
Core Foundation类和Cocoa对运时很想(toll-free bridging)他们并不是类型兼容的我们可以通过bridged键转换,给图层图赋值这可以这样转换
layer.contents= (__bridge id)image.CGImage;
网友评论