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

擴展想法

想要的效果系統不能滿足 考慮重寫一些方法,我們在重寫的方法里面
做一些操作達到我們想要達到的效果

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容