CALayer frame.size不等于bounds.size

我碰巧在CALayer上发生了一些奇怪的事情。最后发现CALayer的frame.size不等于它的bounds.size,我无法理解。我知道框架在超级坐标系中,边界是它自己的坐标,通常的情况是frame.origin不等于bounds.origin但frame.size等于bounds.size。

那是因为你应用了一个转换,就像apple在frame属性的文档中所说的那样。

警告如果transform属性不是identity变换,则此属性的值未定义,因此应忽略。

可以动画对此属性的更改。 但是,如果transform属性包含非标识变换,则frame属性的值是未定义的,不应修改。 在这种情况下,您可以使用center属性重新定位视图,并使用bounds属性resize。

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIView_Class/UIView/UIView.html

如果您没有应用变换,则原点可能不同,但大小应保持不变,调整一个重新调整另一个。

边界矩形的大小与框架矩形的大小相关联,因此更改为一个会影响另一个。