美文网首页
iOS重写setFrame的意义

iOS重写setFrame的意义

作者: 小荣袁 | 来源:发表于2017-03-13 17:31 被阅读579次

    重写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的意义

          本文链接:https://www.haomeiwen.com/subject/tzhqnttx.html