編輯:
爲了解釋了什麼問題擺在首位...
右側的「標籤標籤」,在小區2有一個明確Preferred Width = 300
。我不知道的內部,所以不能準確說出發生了什麼,但我得到的印象計算文本邊界框高度時,自動佈局將採取Preferred Width
價值考慮,並然後繼續與制約,內容固有大小等
只需取消檢查明確的選項將解決這個問題。
原來的答案:
我發現它更容易從頭開始一個新的細胞,而不是試圖修改您設置了限制,所以......這將希望是重複性。
準備:添加新的「小區3」級;進行編碼以適應Cell3的基本編輯。如果我爲標籤值創建一些變量並設置元素的背景顏色以便於目測檢查和測試,我還會發現更容易。
第1步:添加一個新的原型;紫色背景; TableViewCell3類和「Cell3」重用ID;垂直拉伸以使其高度足以處理(它不會影響運行時高度)。
步驟2:爲左側標籤添加UIView
。給Superview的Leading = 8
。 Width = 200
; Height = 100
;垂直居中。高度和寬度值將稍後更改。
步驟3:將兩個左側標籤 - 1
和2
(正文字體) - 添加到UIView
。約束1
Left = 0
; Top = 0
。約束2
Left = 0
; Bottom = 0
。
步驟4:從2
到7.5
的和變化1
了UIView的高度約束添加垂直間距約束>= 20
(運行時將有可能總是超過20)。
步驟5:更改了UIView的寬度約束>= 40
(運行時將有可能總是超過40);爲左側標籤添加Trailing Space to Container
約束,並將它們設置爲>= 0
。
第6步:將頂部和底部「添加到超級查看」限制爲UIView
的>= 0
。
步驟7:添加右側標籤(標題1字體,行數0)。約束Top >= 0
,Right = 0
,Bottom >= 0
,全部給Superview;也垂直居中。
第8步:從右側標籤增加橫向間隔限制到的UIView,設置爲20
。給右側標籤寬度約束= 40
(運行時將可能總是超過40),並設置優先到250
。這允許包含左側標籤的UIView
控制寬度。
第9步:分配IBOutlets並運行該應用程序。嘗試改變文字。使左側標籤更短或更長...嘗試將右側標籤設置爲只有一行足夠的文字...等等。
此時,應該看起來很不錯 - 直到...在其中一個左側標籤上出現很多文字,此時您會看到一個非常非常窄的非常高的右側標籤。所以......
第10步:添加另一個寬度約束至UIView
並將其設置爲<= 200
。根據您的實際內容,您可能需要修改它,或者將其設置爲<=
,以達到單元格寬度的百分比。
我更新了我原來的GitHub回購,所以你可以查看它。它應該有一個承諾爲每個「臺階」上面列出,這可能會使其更容易跟着 - https://github.com/DonMag/CellTest2
結果:再一個真正詳細的答覆
謝謝。早上我會好好看看。過去幾天我一直在複製單元作爲備份,並同意這種方法不錯。不幸的是,所示的例子顯示在我原來的應用程序中,但我一直在使用一段時間,儘管截斷了標籤。它有一些更復雜的佈局,但是當我最終將其剝離爲與我的測試應用程序中顯示的相同的複雜性,但仍顯示出問題時,我認爲值得嘗試發佈另一個問題。 – jimbobuk
我會去建立一個有希望的固定版本的這個單元格。正如你可以在我的測試應用程序中看到的,我的一個單元格工作,另一個看似完全相同的單元格沒有。我只是想盡一切辦法去發現破損的單元裏到底發生了什麼,所以我可以修復它,並在未來避免這個錯誤。隨着你從頭開始的建議你是否說你不知道什麼是錯的?也許這是iOS bug的另一個例子,甚至可能只是模擬器,我還沒有在實際的設備上嘗試它。 – jimbobuk
不管怎樣,再次感謝你的時間。我會好好看看,並在本週更多地處理這個問題,並在我對發生的事情有了更多的瞭解時再次回覆。我從來沒有想過花太多時間在看起來那麼簡單的東西上。一些單元格中的文本!自動佈局有時似乎是一個殘酷的野獸!乾杯! – jimbobuk