CALayer frame.size不等于bounds.size

时间:2012-06-22 02:37:04

标签: ios frame calayer bounds

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

1 个答案:

答案 0 :(得分:7)

这是因为你应用了一个转换,正如苹果在框架属性的文档中所说的那样。

  

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

...

  

可以设置对此属性的更改。但是,如果改造   property包含一个非标识变换,即帧的值   属性未定义,不应修改。在那种情况下,你   可以使用center属性重新定位视图并调整大小   使用bounds属性。

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

如果你没有应用变换,那么原点可能会有所不同,但是尺寸应该与调整一个相同,重新调整另一个。

  

边界矩形的大小与帧的大小相关联   矩形,以便更改为一个影响另一个。