我知道框架是相对于其父视图的视图框架,而bounds是视图的内部边界(除滚动视图外,其原点始终为[0,0]?)。
但是,我不清楚在什么条件下框架和边界大小可能会有所不同(如果有的话)。是否有Apple官方文档说明frame.size = bounds.size
或frame.size ?= bounds.size
?
最佳答案
您可以随心所欲地做任何事情。想象一下,您的视图是一幅画,您只能通过相机对其进行查看。移动原点将改变您当前可以通过移动相机看到的绘画部分。缩小尺寸会放大,因此可见的绘画较少,但看起来较大。扩大尺寸会缩小,因此可以看到更多绘画,但看起来更小。
从documentation for bounds
:
默认情况下,返回的矩形的原点为(0,0),并且其大小与接收方框架矩形的大小匹配(以磅为单位)。
如果显式更改边界矩形的原点或大小,则此方法不返回默认矩形,而是返回您设置的矩形。但是,如果向视图中添加旋转因子,则该因子也会反映在返回的边界矩形中。
从documentation for setBounds:
:
边界矩形确定接收器坐标系在其框架矩形内的原点和比例...
调用此方法后,NSView将创建一个内部变换(或将这些更改附加到现有的内部变换),以从视图中的帧坐标转换为边界坐标。只要两个坐标系的宽高比保持不变,您的内容就会显示为正常。如果比率不同,您的内容可能会出现倾斜。
关于cocoa - NSView-在什么情况下边界和框架*大小*不相等?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13773050/