CALayer frame.size不等于bounds.size

key*_*ind 3 frame calayer bounds ios

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

Poc*_*chi 7

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

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

...

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

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

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

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