视图UIView的大小和位置属性详解

UIView类中定义了三个属性,分别是frame、bounds与center属性:spa

IKit中的坐标系X轴正方向为水平向右,Y轴正方向为竖直向下。.net

frame属性指的是视图在其父视图坐标系中的位置与尺寸。在建立视图时,咱们就须要在初始化方法中指定视图的frame:code

1 - (id)initWithFrame:(CGRect)frame; 

这样建立了视图以后,经过addSubview:方法就能够将建立的子视图放置在父视图的指定位置,并以指定的尺寸显示出来。blog

center属性理解起来也很简单,它就是视图的中心点在其父视图坐标系中的位置坐标。简单讲,center属性就定义了当前视图在父视图中的位置。it

那么bounds属性呢?它指的是视图在其本身的坐标系中的位置与尺寸。class

因为视图的定位必定须要针对父视图,而不是针对本身,因此bounds属性并不可以决定当前视图的位置(由于它与父视图根本无关,就谈不上定位),因此bounds属性与center属性是彻底独立的,前者规定尺寸,后者定义位置。换句话说,修改bounds不影响center;修改center不影响bounds。方法

默认状况下,当视图建立后,其本身的坐标系原点(0, 0)位于其左上角位置。不过,本地原点位置是会随时发生变化的。例如将bounds由最初的(0, 0, 100, 100)修改成(50, 50, 100, 100),则意味着本地原点向左向上移动了50。因为位置和尺寸都未发生变化,因此frame属性与center属性不变。总结

总结:当修改了视图自身的原点位置时,不会影响其自身的位置,而会影响到其子视图的位置。分享

摘自:http://blog.csdn.net/pucker/article/details/7634479  感谢博主的分享移动

相关文章
相关标签/搜索