直接说Frame与bounds的区别与联系不太好说。
不如看看各自的内部有什么吧。还有影响。
先说Frame
在Frame中,你可以"点出"origin,也就是位置。origin中有两个值,一个是x,一个是y,不用多说,也知道什么意思。
还可以"点出"size,也就是大小。size中有两个值,一个是width,一个是height,是指当前view的宽高。
在bounds中,你也可以"点出"origin和size,同样的,origin和size中的值和Frame中的值是一样的。
区别呢?
bounds.origin中的x、y不会对当前的视图位置产生影响,而是影响其内部的view,也就是影响当前view的子视图在其内部的位置。
而frame.origin中的x、y是影响当前view在其父控件中的位置。对于当前view的子视图没有影响,即改变当前frame不会影响其子控件在其内部的位置。
这是bounds与frame的区别。那么bounds与frame中的size呢,也就是width和height呢?
其实bounds.size就等于frame.size。
需要补充的是
当使用[view setFrame:CGRectMake(100,100,100,100)];设置好view的位置后,再使用setBounds改变了view的size(宽高),那么,view在父控件的位置会发生改变,改变的原则是:view的中心不发生改变,即改变宽高后的view的中心依然在原来位置。