起因:
新項目中,有的cell要分割線,有的cell不要分隔線,又有的cell分割線拒裏前端15pix。搞得我也真是醉了,如果用自定義分割線的話也不好處理。然後我看了一下UITableviewCell中view的分級,如下圖:
在UITableviewCell中,UITableViewCellContentView
和_UITableViewCellSeparatorView
這兩種視圖作爲子視圖存在,並且_UITableViewCellSeparatorView
作爲私有變量。
期間的解決方案:
我曾經嘗試在view加載完成,設置視圖數據的時候,for循環拿到分割線(_UITableViewCellSeparatorView),但是結果並不理想,要麼是隻能拿到一條,要麼是一條也拿不到。
下面正題來了:
我後來突發奇想,能不能再view加載之前做處理,至少UITableviewCell的-[addSubView:]的方法我們還是可以重載的。然後結果如下(嘿嘿嘿):
- (void)addSubview:(UIView *)view
{
if (![view isKindOfClass:[NSClassFromString(@"_UITableViewCellSeparatorView") class]] && view)
[super addSubview:view];
}
怎麼樣,看沒看到終端裏view
的類型,就是之前說的分割線的視圖。
總結
像上面的代碼,我們的要求是要求某個cell不要分割線,所以在加載的時候,系統給UITableViewCell添加subview的時候,直接屏蔽掉分隔線即可。其他情況還可以另行操作,比如說修改某條分割線的顏色或是修改某條分割線的左側距離(別跟我說系統的,系統的改一條全部都會變)。