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 感谢博主的分享移动