NSView - 在什么条件下边界和框架*大小*是不等的?

时间:2012-12-08 00:14:48

标签: cocoa nsview

我知道框架是一个相对于它的父视图的框架,边界是视图的内部边界(除了滚动视图的情况外,原点总是[0,0]?)。

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

1 个答案:

答案 0 :(得分:1)

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

来自documentation for bounds

  

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

     

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

来自documentation for setBounds:

  

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

     

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