重寫setFrame有很多作用,主要包括下面幾個(gè)方面
- 巧妙繪制cell的分隔線
- 設(shè)置cell四周都有分隔
- 書寫自己的框架時(shí),尺寸不允許改,那么就可以通過重寫setFrame/setBounds方法來(lái)固定控件的尺寸
何時(shí)重寫
- 當(dāng)我們想攔截系統(tǒng)的某些設(shè)置或者某些操作時(shí),我就
ps:重寫父類的方法時(shí),特別注意的是需要調(diào)用父類的super方法
有何作用
- 只有重寫了setFrame方法,那么我們外部使用時(shí)就不用設(shè)置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];
}
擴(kuò)展想法
想要的效果系統(tǒng)不能滿足 考慮重寫一些方法,我們?cè)谥貙懙姆椒ɡ锩?br> 做一些操作達(dá)到我們想要達(dá)到的效果