iOS重写setFrame的意义

重写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];
}

扩展想法

想要的效果系统不能满足 考虑重写一些方法,我们在重写的方法里面
做一些操作达到我们想要达到的效果

你可能感兴趣的:(iOS重写setFrame的意义)