重写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];
}
扩展想法
想要的效果系统不能满足 考虑重写一些方法,我们在重写的方法里面
做一些操作达到我们想要达到的效果
网友评论