2015-10-15 96 views
0

我在UITableView中使用自定義單元格實現了一個奇怪的錯誤。iOS UITableView Bug - 每隔一個tableview單元格上的白線

每個其他單元在其底部都有一條白線。此行僅出現在iPhone 5和iPhone 6上。它不會在iPhone 6+上顯示。從iPhone 6模擬器(您可以看到該線路)和iPhone 6+模擬器(您沒有看到該線路)提供了兩個屏幕截圖。

iphone 6 screenshotenter image description here

我試過計算器上的每一個解決方案,但他們都不工作。也就是說,我已經添加了下面的方法來我的表視圖:

-(void)viewDidLayoutSubviews 
{ 
    [super viewDidLayoutSubviews]; 

    if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)]) { 
     [self.tableView setSeparatorInset:UIEdgeInsetsZero]; 
    } 

    if ([self.tableView respondsToSelector:@selector(setLayoutMargins:)]) { 
     [self.tableView setLayoutMargins:UIEdgeInsetsZero]; 
    } 
} 

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if ([cell respondsToSelector:@selector(setSeparatorInset:)]) { 
     [cell setSeparatorInset:UIEdgeInsetsZero]; 
    } 

    if ([cell respondsToSelector:@selector(setLayoutMargins:)]) { 
     [cell setLayoutMargins:UIEdgeInsetsZero]; 
    } 

    if ([cell respondsToSelector:@selector(setPreservesSuperviewLayoutMargins:)]) { 
     [cell setPreservesSuperviewLayoutMargins:NO]; 
    } 

    if ([tableView respondsToSelector:@selector(setSeparatorInset:)]) { 
     [tableView setSeparatorInset:UIEdgeInsetsZero]; 
    } 

    if ([tableView respondsToSelector:@selector(setLayoutMargins:)]) { 
     [tableView setLayoutMargins:UIEdgeInsetsZero]; 
    } 
} 

和下面的方法來我的自定義單元格:

- (UIEdgeInsets)layoutMargins { 
    return UIEdgeInsetsZero; 
} 

但該行仍看到其他各小區。任何想法如何擺脫這條線?謝謝!

+0

你確定這是一個分隔符問題嗎?不在你的牢房裏? – almas

+0

您可以嘗試爲單元格,tableView,視圖等設置不同的背景顏色,以準確找出白線的來源。 – almas

回答

0

請在storyboard中檢查您的細胞高度。如果是自定義細胞,請確認您的細胞高度。

我面臨同樣的問題,我的錯誤是細胞高度。

另外檢查.m文件單元格高度方法是否返回不同的高度。

否則通過應用不同的顏色來檢查所有視圖。

+0

鑑於它的每個單元格都是相同的自定義類型,爲什麼高度不同? – user3298872

相關問題