iOS重寫setFrame的意義

重寫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á)到的效果

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容