初始化TableViewCell時獲取到的寬度錯誤

2021-07-29 05:46:25 字數 1029 閱讀 1732

需求是這樣的,我需要在tableviewcell裡面加入乙個和cell的寬高一樣大的label,我使用_contentlabel = [[uilabel alloc] initwithframe:self.contentview.bounds];來設定label的寬高,然後使用懶載入在初始化方面裡面新增label,完整的**如下:

- (instancetype)initwithstyle:(uitableviewcellstyle)style reuseidentifier:(nsstring *)reuseidentifier

return

self;

}- (uilabel *)contentlabel

return _contentlabel;

}

label總是佔不滿螢幕。我在iphone5上面執行正常,在iphone 6上面執行出錯了,斷點除錯後才發現寬度是320,高度是44,結果如下: 

查了一資料,可能是歷史遺留問題,所以tableviewcell在初始化的時候寬高預設是320*44.只有在布局的時候才會調整到設定的高度。所以可以重寫layoutsubviews方法。在layoutsubviews裡面載入label即可。

- (instancetype)initwithstyle:(uitableviewcellstyle)style reuseidentifier:(nsstring *)reuseidentifier

return

self;

}- (void)layoutsubviews

- (uilabel *)contentlabel

return _contentlabel;

}

結果如下 

初始化 指定初始化

id alloc 物件的誕生過程,主要是從作業系統獲得一塊足夠大的記憶體,以存放該類的全部例項變數,並將其指定為存放記憶體物件的實力變數的位置。alloc方法同時將這塊記憶體全部設定為0。結果是 bool變數初始化為no,所有的int型別變數為0,float變數為0.0,所有的指標為nil.obje...

初始化 1 預設初始化 列表初始化

初始化的基本概念 事實 初始化和賦值是兩個完全不同的操作。初始化,是建立變數時賦予其乙個初始值。賦值,是把物件的當前值擦除,用乙個新值代替。列表初始化 p39 作為c 11新標準的一部分,用花括號 來初始化變數得到了全面應用。出於某些原因,這種初始化的方式叫做列表初始化。現在,無論是初始化物件還是某...

初始化 MyBatis初始化之載入初始化

在mybatis初始化過程中,大致會有以下幾個步驟 1.建立configuration全域性配置物件,會往typealiasregistry別名註冊中心新增mybatis需要用到的相關類,並設定預設的語言驅動類為xmllanguagedriver 3.構建defaultsqlsessionfacto...