3

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

4

1 回答 1

7

那是因为您应用了变换,正如苹果在 frame 属性的文档中所说的那样。

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

...

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

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

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

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

于 2012-06-22T05:01:11.677 回答