大家是否還記得對控件的frame/bounds/center進行屬性更改時的三部曲?
1>將結構體取出
2>改變取出後的結構體對應的數據
3>將修改後的結構體賦值給控件
CGRect frame = self.view.frame;
// your code...
frame.origin.x = frameX;
// your code...
self.view.frame = frame;
這在實際工作中需要更改相應屬性的時候是很不方便的,所以考慮到直接在UIView的分類中添加相應的屬性通過重寫它們的setter與getter方法達到快速賦值的目的;
思路:
1>在.h文件中添加相應的屬性例如
@property (assign,nonatomic) CGFloat frameX;
-(CGFloat)frameX{
return self.frame.origin.x;
}
-(void)setFrameX:(CGFloat)frameX{
CGRect frame = self.view.frame;
frame.origin.x = frameX;
self.view.frame = frame;
}
這樣在後續工作中使用的時候就會特別的方便,例如想更改控件的frame屬性中的X值則在引入這個分類後直接如下書寫即可
self.redView.frameX = 100;
完整代碼請參考