自定義cell時,[self addSubView:] 和 [self.contentView addSubView:] 的區別
在專案中,自定義cell幾乎是不可避免的事情。這邊我們自定義三個cell,每個cell都包含imgView和label,佈局約束都一樣。
-
cell1 :
self addSubView
-
cell2:
self.contentView addSubView
-
cell3: 使用xib視覺化建立
Build以後,我們發現三個cell的顯示完全一樣。這時,我們設 self.tableView.editing = YES
,再次Build,那麼問題來了,如下圖

當cell處於可編輯狀態時,cell2和cell3佈局是正常的,然而cell1佈局卻發生了錯亂。這時我們再看cell3 xib畫出來的cell的層級關係,如下圖

xib畫出來的cell,所有的控制元件都是在contentView下的。因此,cell3和cell2是一樣的,新增在contenView下的控制元件是不會隨cell的編輯狀態發生錯亂的。
我們再使用Reveal看下整體的圖層關係。如下圖。cell1中,直接使用 self addSubView
方法,控制元件和contenView是同一層級下的。

官網對cell的contenView的解釋如下,大意是:如果你想要新增額外的view來自定義cell的時候,你需要將它們新增在contentView上,以確保當cell切換到編輯模式時它們不會出現錯亂。
