Iphone Isn';UIView的属性层是否为只读?

Iphone Isn';UIView的属性层是否为只读?,iphone,ios,transform,layer,Iphone,Ios,Transform,Layer,UIView的属性层在苹果的文档中描述如下: 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

UIView的属性层在苹果的文档中描述如下:

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 
图层

用于渲染的视图的核心动画层。(只读)

很明显,它是只读的。但在我的项目中,为什么可以设置如下:

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 

在这种情况下真的很困惑。有人能帮我吗?提前谢谢

层属性是只读的,这意味着您不能为另一个层更改层,但是属性中包含的
CALayer
对象不是不可变的,您可以设置自己的属性

你不能这样做:

self.myView.layer = newLayer;
// equivalent to [self.myView setLayer:newLayer];
但你可以做到:

[self.myView.layer setAffineTransform:CGAffineTransformMakeScale(2, 2)];

您不能使用的是
setLayer:
选择器。

属性
layer
是只读的,这意味着您不能更改另一个层,但是属性中包含的
CALayer
对象不是不可变的,您可以设置它自己的属性

你不能这样做:

self.myView.layer = newLayer;
// equivalent to [self.myView setLayer:newLayer];
但你可以做到:

[self.myView.layer setAffineTransform:CGAffineTransformMakeScale(2, 2)];
您不能使用的是
设置层:
选择器。

不是UIKit的一部分。它是石英核心框架的一部分

而类是UIKit的一部分。您可以阅读两者的文档以了解它们的区别

UIView继承自NSObject,CALayer也继承自NSObject,因此在您执行以下操作时:[self.myView.layer setAffineTransform:CGAffineTransformMakeScale(2,2)]

您没有分配图层,实际上是直接访问类图层属性,因此您可以处理图层的位置、大小和变换,正如您在文档中看到的,它允许所有这些内容

不是UIKit的一部分。它是石英核心框架的一部分

而类是UIKit的一部分。您可以阅读两者的文档以了解它们的区别

UIView继承自NSObject,CALayer也继承自NSObject,因此在您执行以下操作时:[self.myView.layer setAffineTransform:CGAffineTransformMakeScale(2,2)]


您没有分配层,实际上是直接访问类层属性,因此您可以处理层的位置、大小和转换,正如您在文档中所看到的,它允许所有这些功能

Quartzcore是一个核心级框架,但UIkit仅作为IOS的更高级别框架构建,因此,使用Quartzcore CALayer可以访问视图图层的属性。还有什么疑问吗,我的朋友?Quartzcore是一个核心级别的框架,但UIkit只是作为IOS的更高级别框架构建的,因此使用Quartzcore CALayer您可以访问视图层的属性。还有什么疑问吗,我的朋友?