2017-07-08 87 views
0

我摔跤試圖讓一些多標籤的tableview細胞內的行爲。我已經離開從沒有在這個問題上UITableCell,支持自動佈局配置的多的UILabel被截斷

UILabel inside nested UIStackViews inside UITableViewCell sometimes truncating

我定我的觀點與一個對這個問題的意見的幫助,但另一種觀點認爲只是止跌描述可靠地工作在所有棧遠即使在轉移到自動佈局非堆棧視圖設置後,它也不適用於我。然後,我結束了移動,我不能去上班進在相似的佈局工作視圖中的細胞,併到了一個地步,我有兩個細胞相同的觀點,一個工作,一個沒有。我已經出口到了我已經上傳here

在這個程序有一個與在它2個單元的簡單的tableview一個新的測試應用程序這一點。一個單元格正確顯示大型多行文字,並根據需要展開單元格。其他細胞停止短並截斷多標籤,你可以在這裏看到

app simulator screenshot

兩個細胞,在我看來幾乎等同於他們的約束,所以我很困惑,爲什麼一個工程和其他沒有按」噸。下面是它們的約束概述

constraints for cells

有,因爲我一直在嘗試,試圖找出是什麼導致的細胞不能正常工作的一個未安裝的幾個約束。

如果有人可以向我解釋是什麼導致這兩個單元格的行爲不一樣,或者更重要的是,爲什麼其中一個標籤沒有填充表格單元格,因爲我花了幾個小時的時間而且似乎無法弄清楚。

乾杯!

回答

1

編輯:

爲了解釋了什麼問題擺在首位...

右側的「標籤標籤」,在小區2有一個明確Preferred Width = 300。我不知道的內部,所以不能準確說出發生了什麼,但我得到的印象計算文本邊界框高度時,自動佈局將採取Preferred Width價值考慮,並然後繼續與制約,內容固有大小等

只需取消檢查明確的選項將解決這個問題。


原來的答案:

我發現它更容易從頭開始一個新的細胞,而不是試圖修改您設置了限制,所以......這將希望是重複性。

準備:添加新的「小區3」級;進行編碼以適應Cell3的基本編輯。如果我爲標籤值創建一些變量並設置元素的背景顏色以便於目測檢查和測試,我還會發現更容易。

第1步:添加一個新的原型;紫色背景; TableViewCell3類和「Cell3」重用ID;垂直拉伸以使其高度足以處理(它不會影響運行時高度)。

步驟2:爲左側標籤添加UIView。給Superview的Leading = 8Width = 200; Height = 100;垂直居中。高度和寬度值將稍後更改。

步驟3:將兩個左側標籤 - 12(正文字體) - 添加到UIView。約束1Left = 0; Top = 0。約束2Left = 0; Bottom = 0

步驟4:從27.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

結果:再一個真正詳細的答覆

enter image description here

+0

謝謝。早上我會好好看看。過去幾天我一直在複製單元作爲備份,並同意這種方法不錯。不幸的是,所示的例子顯示在我原來的應用程序中,但我一直在使用一段時間,儘管截斷了標籤。它有一些更復雜的佈局,但是當我最終將其剝離爲與我的測試應用程序中顯示的相同的複雜性,但仍顯示出問題時,我認爲值得嘗試發佈另一個問題。 – jimbobuk

+0

我會去建立一個有希望的固定版本的這個單元格。正如你可以在我的測試應用程序中看到的,我的一個單元格工作,另一個看似完全相同的單元格沒有。我只是想盡一切辦法去發現破損的單元裏到底發生了什麼,所以我可以修復它,並在未來避免這個錯誤。隨着你從頭開始的建議你是否說你不知道什麼是錯的?也許這是iOS bug的另一個例子,甚至可能只是模擬器,我還沒有在實際的設備上嘗試它。 – jimbobuk

+0

不管怎樣,再次感謝你的時間。我會好好看看,並在本週更多地處理這個問題,並在我對發生的事情有了更多的瞭解時再次回覆。我從來沒有想過花太多時間在看起來那麼簡單的東西上。一些單元格中的文本!自動佈局有時似乎是一個殘酷的野獸!乾杯! – jimbobuk