重寫setFrame有很多作用,主要包括下面幾個方面
- 巧妙繪制cell的分隔線
- 設置cell四周都有分隔
- 書寫自己的框架時,尺寸不允許改,那么就可以通過重寫setFrame/setBounds方法來固定控件的尺寸
何時重寫
- 當我們想攔截系統的某些設置或者某些操作時,我就
ps:重寫父類的方法時,特別注意的是需要調用父類的super方法
有何作用
- 只有重寫了setFrame方法,那么我們外部使用時就不用設置frame也有尺寸
示范
- 1.控件的frame
- (void)setFrame:(CGRect)frame
{
frame.size = CGSizeMake(100,100);
[super setFrame:frame];
}
- 2.控件的bounds
- (void)setBounds:(CGRect)bounds
{
bounds.size = CGSizeMake(100,100);
[super setBounds:bounds];
}
- 3.分隔線
- 3.1 頂部底部分隔線
- (void)setFrame:(CGRect)frame
{
// 讓y值改變,+= 10,height -=10
frame.origin.y += 10;
frame.size.height -= 10;
[super setFrame:frame];
}
- 3.2左右分隔線
- (void)setFrame:(CGRect)frame
{
// 讓x值改變,+= 10,width值 -= 2 * 10
frame.origin.y += 10;
frame.size.width -= 2 * 10;
[super setFrame:frame];
}
- 3.3上下左右分隔線
- (void)setFrame:(CGRect)frame
{
// 讓x值改變,+= 10,width值 -= 2 * 10,y += 10, height -= 10
frame.origin.y += 10;
frame.size.height -= 10;
frame.origin.x += 10;
frame.size.width -= 2 * 10;
[super setFrame:frame];
}
擴展想法
想要的效果系統不能滿足 考慮重寫一些方法,我們在重寫的方法里面
做一些操作達到我們想要達到的效果