上篇大體介紹了一些空間的常見屬性,本篇主要介紹一下UIVIew的常見屬性.
首先引入上一篇介紹的UIView的常見屬性:
//控件所在矩形框在父控件中的位置和尺寸(以父控件的左上角為坐標原點)@PRoperty(nonatomic) CGRect frame;//控件所在矩形框的位置和尺寸(以自己左上角為坐標原點,所以bounds的x/y一般為0)@property(nonatomic) CGRect bounds;//控件中點的位置(以父控件的左上角為坐標原點)@property(nonatomic) CGPoint center;//控件的形變屬性(可以設置旋轉角度、比例縮放、平移等屬性@property(nonatomic) CGAffineTransform transform;
想了解這幾個常用的屬性,首先要知道:在UIKit中,坐標系的原點(0,0)在左上角,x值向右正向延伸,y值向下正向延伸,如下圖所示
struct CGRect { CGPoint origin; CGSize size;};typedef struct CGRect CGRect;
CGRect是一個結構體,它有origin和size屬性.而origin是一個CGPoint,是一個點,它又有兩個屬性為X/Y,代表位置.
size是一個CGSize,它有兩個屬性為Width/Height,代表寬高.
frame屬性是描述當前視圖在父視圖中的位置和尺寸
所以按鈕的frame屬性的參照點是父視圖(新添加的view),以父視圖的左上角為坐標原點.
以控件所在矩形框的位置和尺寸(以自己左上角為坐標原點,所以bounds的x/y一般為0)與frame的主要區別也就在于此.
控件中點的位置(以父控件的左上角為坐標原點):是一個CGPoint,只有x/y屬性.
控件的形變屬性(可以設置旋轉角度、比例縮放、平移等屬性)
-(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);}
bounds指的是:視圖(控件)在本身坐標系統中的位置和大小。(參照點是本身坐標系統,x,y都為0)
新聞熱點
疑難解答