Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我在CALayer上遇到了一些奇怪的事情。最后发现CALayer的frame.size不等于它的bounds.size,我无法理解。我知道frame在super的坐标系中,bounds是它自己的坐标,并且通常的情况是 frame.origin 不等于 bounds.origin 但 frame.size 等于 bounds.size。
那是因为您应用了变换,正如苹果在 frame 属性的文档中所说的那样。
警告 如果变换属性不是恒等变换,则此属性的值未定义,因此应被忽略。
...
对此属性的更改可以设置动画。但是,如果 transform 属性包含非恒等变换,则 frame 属性的值是未定义的,不应修改。在这种情况下,您可以使用 center 属性重新定位视图并使用 bounds 属性调整大小。
http://developer.apple.com/library/ios/#documentation/uikit/reference/UIView_Class/UIView/UIView.html
如果您没有应用变换,则原点可能不同,但大小应保持不变,因为调整一个重新调整另一个。
边界矩形的大小与框架矩形的大小相关联,因此对一个矩形的更改会影响另一个。