UIView的属性层在Apple的文档中描述如下:
层
视图的Core Animation层用于渲染。 (只读)
@property(nonatomic, readonly, retain) CALayer *layer
显然它是只读的。但在我的项目中,为什么可以设置如下:
NSLog(@"before: %f",self.myView.laye.frame.size.width);
[self.myView.layer setAffineTransform:CGAffineTransformMakeScale(2, 2)];
NSLog(@"after: %f",self.myView.laye.frame.size.width);
//log shows us that the frame is modified
在这种情况下真的很困惑。有人可以帮帮我吗?提前谢谢!
答案 0 :(得分:4)
layer
属性是只读的,这意味着您无法更改另一个属性的层,但属性中包含的CALayer
对象不是不可变的,您可以设置自己的属性。
你做不到:
self.myView.layer = newLayer;
// equivalent to [self.myView setLayer:newLayer];
但你可以这样做:
[self.myView.layer setAffineTransform:CGAffineTransformMakeScale(2, 2)];
它是您无法使用的setLayer:
选择器。
答案 1 :(得分:1)