如何有效去掉分割線(UITableViewCellSeparatorView),並或控制單條分割線

起因:

新項目中,有的cell要分割線,有的cell不要分隔線,又有的cell分割線拒裏前端15pix。搞得我也真是醉了,如果用自定義分割線的話也不好處理。然後我看了一下UITableviewCell中view的分級,如下圖:
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的時候,直接屏蔽掉分隔線即可。其他情況還可以另行操作,比如說修改某條分割線的顏色或是修改某條分割線的左側距離(別跟我說系統的,系統的改一條全部都會變)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章