在开发中只要涉及到绘制,我们总会用到frame,bounds,center,position,anchorPoint等,表示大小和位置的界面元素。所以必须先弄清除这些元素表示的意思,以及它们之间的联系。
1、bounds:每个视图都有自身的坐标系,及默认左上角为原点,以横向为X轴向右递增,以纵向为Y轴向下递增。即bounds。它是由一个CGPoint和一个CGSize组成。改变它不会改变自身的位置,但是会影响子视图的位置。
2、frame:描述当前视图,相对于父视图坐标系的位置和大小
如下图所示
3、center:当前视图中心点的位置;
4、把position和anchorPoint放在一起比较好理解,有个比较形象的比喻,把当前视图看作是一张打印纸被一根图钉钉在桌面上(相当于父界面元素),可以想像这张打印纸可以绕着这根图钉旋转。那么图钉相对于打印纸的位置就可以用anchorPosition来描述,而这根图钉在桌面上的位置便是position。
需要重点说明的是anchorPoint内的值是比例值,即0~1。相对关系如下图所示
图1-anchorPoint常用值(在自身坐标系中) 图2-bounds、frames、position、auchorPoint四者关系而当改变position时,frame中的origin也会基于position、anchorPosition、宽、高重新计算,具体转换公式参考文章里有详细说明!
参考文章
网友评论