ios 设置属性的center_ios-坐标系统(详解UIView的frame、bounds跟center属性[图])
1、概要
翻開ios官方開發文檔,赫然發現上面對這三個屬性的解釋如下:
frame:描述當前視圖在其父視圖中的位置和大小。
bounds:描述當前視圖在其自身坐標系統中的位置和大小。
center:描述當前視圖的中心點在其父視圖中的位置。
是不是有點迷糊?好吧,別急,讓我們先說說ios的坐標系統。
2、ios坐標系統
ios以左上角為坐標原點(0,0),以原點向右側為X軸正方向,原點下側為Y軸正方向,如下圖所示。
ios采用CGPoint來表示點在坐標系上X、Y位置。我們可以通過CGPointMake(x,y)來創建一個坐標點:CGPoint
point = CGPointMake(80,40)
同時,ios采用CGSize來表示視圖的寬度和高度,即視圖的大小。我們
可以通過CGSizeMake(width,height)來創建一個矩形的大小,如CGSize size =
CGSizeMake(144,72)將創建一個寬度為144,高度為72的矩形大小。
而CGRect則是結合了CGPoint和CGSize,用來表示矩形的位置和大小。它的origin表示矩形右上角所在位置(CGPoint),size表示矩形的大小(CGSize)。
3、frame、bounds和center的區別與聯系
回到frame和bounds屬性,通過前面的描述不難發現,這兩個屬性都
是用來描述視圖的大小(CGSize)和位置(CGPoint)的,兩者都用CGRect表示。不同的是,frame描述的是在其父視圖中的
CGRect,而bounds描述的是在其自身視圖中的CGRect,也就是說,兩者所在的坐標系是不同的。如圖3所示,View
B是View A的子視圖,那么,View B的frame屬性為origin(200,100),size(200,250),而View
B的bounds屬性為origin(0,0),size(200,250)。
center屬性則用CGPoint表示矩形中心點在其父視圖中的位置,如圖3中View
B的center屬性為(300,200)。
frame、bounds和center三個屬性是相互關聯、相互影響的,其中一個屬性發生變化,其他屬性也會跟著變化。
4、frame、bounds和center的使用場景
一般來說,bounds屬性比較少用,通常使用frame來設置視圖的大小和位置,使用center來改變(移動)視圖的位置(也可用frame來改變位置)。另外,對視圖進行旋轉、縮放也都是相對于center進行操作的。
From:
http://unmi.cc/ios-bounds-frame
frame和bounds是UIView中的兩個屬性(property)。
frame指的是:該view在父view坐標系統中的位置和大小。(參照點是父親的坐標系統)
bounds指的是:該view在本身坐標系統中
的位置和大小。(參照點是本身坐標系統)
-(CGRect)frame{
return
CGRectMake(self.frame.origin.x,self.frame.origin.y,self.frame.size.width,self.frame.size.height);
}
-(CGRect)bounds{
return
CGRectMake(0,0,self.frame.size.width,self.frame.size.height);
}
總結
以上是生活随笔為你收集整理的ios 设置属性的center_ios-坐标系统(详解UIView的frame、bounds跟center属性[图])的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 客厅西墙挂富春山居图中的富水长流合适吗?
- 下一篇: 东城墙面打磨机前面勾子什么用?