2017-09-15 106 views
8

有一個應用程序與多個部分,「展開」每節幾行,「摺疊」時沒有。每個部分都有一個部分標題,正在使用UITableViewHeaderFooterView的子類等等。目前爲止這麼好。iOS 11浮動TableView標題

然後在iOS的11:

Screenshot describing the issue

我已經使用了可視化調試器,並確認這是我的節頭浮動。標題下的所有行顯示正確,其他標題顯示正常。

爲了恢復理智,我拋出了頭部的所有重用邏輯,並以編程方式進行編程。彼此彼此。所有在iOS 11之前的工作,仍然在iOS 11中浮動。浮動部分似乎每次都會改變,所以就是這樣。

任何想法?

+0

如果禁用擴展合約邏輯,問題是否會消失? –

回答

0

您是否添加了故事板的標題,如果是,請分享「storyboard中的tableview標題」屏幕截圖
您還計算行高嗎?是否按預期計算?

+0

最初從XIB加載它們,然後以編程方式創建它們。兩者都導致問題。至於身高,我有一個估計的高度,它是通過約束和'UITableViewAutomaticDimension' – VDub19

1

嘗試將表格樣式從普通變爲分組。

+0

計算有趣。這似乎糾正了視覺錯誤,但留下了一些其他問題(所有與分組的tableView - 頁腳高度,背景顏色和稍微改變的動畫有關)。任何想法是什麼影響了簡單的tableview?表面上看,這似乎是一個不必要的改變,以避免更大的問題。 – VDub19

35

恰好碰到了類似的問題,並發現其the discussion on this issue爲我工作:

self.tableView.estimatedRowHeight = 0; 
self.tableView.estimatedSectionHeaderHeight = 0; 
self.tableView.estimatedSectionFooterHeight = 0; 

好像在iOS的11改爲使用估計高度UITableView默認行爲。 iOS 11 beta 2發佈說明如下:

表視圖現在默認使用估計的高度,這也意味着默認情況下單元格和節標題/頁腳視圖現在都是自大小。 estimatedRowHeight,estimatedSectionHeaderHeight和estimatedSectionFooterHeight屬性的默認值現在是UITableViewAutomaticDimension,這意味着表視圖選擇估計使用的高度。如果可能的話,您仍然應該爲每個屬性提供更準確的估計值,這是您對實際高度的平均值的最佳猜測。如果現有表格視圖代碼在使用iOS 11 SDK構建應用程序時行爲不同,並且您不想採用自定義大小,則可以通過將值設置爲0來禁用估計高度來恢復先前的行爲每個估計的身高屬性。 (30197915)

另請參閱beta 2版本說明mirrored here

+0

不確定這與行高有關,因爲高度顯示正確(只是行本身錯位)。使建議的更改只是零出一堆行。 – VDub19

+0

將這些設置回零解決了我的問題,謝謝! – amleszk

+0

不需要設置行高('self.tableView.estimatedRowHeight = 0;'),只需設置'estimatedSectionHeaderHeight'和'estimatedSectionFooterHeight'即可。 – Itachi

1

我不知道爲什麼在我的情況,@ahmedre答案是不工作...

所以我的回答可能幫助你,如果你將所有估計屬性設置爲0也不能正常工作:

func tableView(_ tableView: UITableView, estimatedHeightForHeaderInSection section: Int) -> CGFloat { 
    return 0.1 
} 

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { 
    return 0.1 
} 
+0

工程! 0沒有工作。 – DaNLtR