1

我知道 frame 是视图相对于其父视图的框架,而 bounds 是视图的内部边界(除了滚动视图,原点总是 [0, 0] 吗?)。

但是,我不清楚在什么条件下框架和边界大小可能会有所不同,如果有的话。是否有官方的 Apple 文档说明frame.size = bounds.size是否frame.size ?= bounds.size

4

1 回答 1

1

你可以做任何你想做的事情。想象一下,您的视图是一幅画,您只能通过相机观看。移动原点将改变您当前可以通过移动相机看到的绘画部分。缩小尺寸会放大,因此可以看到更少的绘画,但看起来更大。扩大尺寸会缩小,以便更多的绘画可见,但看起来更小。

文档中bounds

默认情况下,返回的矩形的原点是 (0, 0) 并且它的大小与接收者的框架矩形的大小(以磅为单位)相匹配......

如果显式更改边界矩形的原点或大小,此方法不会返回默认矩形,而是返回您设置的矩形。但是,如果您向视图添加旋转因子,该因子也会反映在返回的边界矩形中。

并从以下文档中获取setBounds:

边界矩形确定接收器坐标系在其框架矩形内的原点和比例......

调用此方法后,NSView 会创建一个内部变换(或将这些更改附加到现有的内部变换)以在您的视图中从帧坐标转换为边界坐标。只要两个坐标系的宽高比保持不变,你的内容就显得正常。如果比率不同,您的内容可能会出现偏差。

于 2012-12-08T01:14:37.750 回答