2014-09-24 50 views
13

iPhone 6 Plus上的表格視圖單元格分隔符有問題。我用一個自定義單元格創建了一個空白測試項目,只有一個標籤和一個15pt的前導邊界約束。iPhone 6 Plus有些問題tableView.separatorInset

iPhone 5S

標籤和分離器是從前緣30 PX(15pt)。一切都很好。

iPhone 5S

iPhone 6加

標籤是從前緣48 PX(15pt)和隔板是從前緣60像素(20pt)。

iPhone 6 Plus

如果我登錄的tableView.separatorInset它15pt在iPhone 5S和20pt在6個加。手動設置6 Plus上的插圖爲15不起作用。

請發送幫助。

+0

即使在最近的iOS 8.1.1更新後,我也遇到同樣的問題。奇怪的是,這隻發生在自定義風格的表格視圖單元上。 – zgosalvez 2014-11-28 02:57:20

+0

在iPad上嘗試了這一點,它也發生了。 – zgosalvez 2014-11-28 05:22:19

+0

找到任何解決方案?我也有同樣的問題。 – Sam 2015-02-15 05:08:42

回答

6

覆蓋您的自定義單元類中的layoutMargins方法。

- (UIEdgeInsets)layoutMargins 
{ 
    return UIEdgeInsetsMake(0, 15, 0, 0); 
} 
+0

沒有硬編碼號碼的情況下,更好的方法是做什麼? – Sam 2015-02-15 05:02:20

+0

更好的方法是禁用分隔符並添加自定義視圖作爲分隔符。 – Vidyalaxmi 2016-01-11 06:46:45

+0

有關正確的方法,請查看[這篇文章](http://stackoverflow.com/questions/27420888/uitableviewcell-with-autolayout-left-margin-different-on-iphone-and-ipad)。這是正確的方式的原因是因爲它尊重更大的設備,如6 Plus或iPad的較大的左邊距。由於某種原因,Apple將保證金設置得更大,因此看起來更好,並且應用程序應該尊重這一點。 – yilin 2016-01-23 19:49:40

1

不是一個完美的解決方案,但它爲我工作。

@IBOutlet weak var leftViewLeadingConstraint: NSLayoutConstraint! 

override func viewWillLayoutSubviews() { 
    super.viewWillLayoutSubviews() 
    switch UIScreen.mainScreen().scale { 
    case 2: 
     leftViewLeadingConstraint.constant = 7.0 
    case 3: 
     leftViewLeadingConstraint.constant = 11.0 
    default: 
     assertionFailure("Error: wrong scale value") 
    } 
} 
+0

我不知道爲什麼這個答案沒有得到選票。它對我來說非常合適!我調整了我的UITableViewCell子類中的layoutSubviews方法的前緣約束,如果比例爲3,並且在Storyboard中,我指定前緣約束的值爲12(我認爲11是錯誤的),如果大小類是Regular寬x任何高度。 – Blip 2015-03-30 22:59:36

1

我定這個解決方案: http://qiita.com/mono0926/items/42f7a344b39e946abfe2

獲取tableView.separatorInset.left值時調用viewDidLayoutSubviews

override func viewDidLayoutSubviews() { 
    super.viewDidLayoutSubviews() 
    notificationLabelLeft.constant = tableView.separatorInset.left 
} 
2

如果您正在使用Storyboard,請選擇Table View屬性檢查器。更改

分離插圖

定製

並保留默認留有餘量爲15

+0

對於IOS 9,這個解決方案適合我。我正在使用一個自定義單元格,其中包含一個帶有15pt約束條件的標籤。除了iPhone 6+和iPad之外,所有iPhone的15pt約束條件都很好(標籤與tableview的分隔符不一致)。這個解決方案雖然解決了問題。謝謝! – xNightxOwl 2015-09-06 02:10:54

+0

也適用於iOS 8.最簡單的解決方案。 – Tuslareb 2016-02-29 11:32:52

0

只是將該表的選項設置爲false,並且它在所有設備上都會發揮相同的作用,特別是在iPad上。

cellLayoutMarginsFollowReadableWidth = false 
相關問題