簡體   English   中英

為什么 UITableViewCell 相互重疊?

[英]Why UITableViewCell's overlap each other?

我有一個簡單的UITableViewCell包含UIImageView和 3 UILabel的。 在這里,我提供了一個正常的單元格外觀來深入了解問題:

在此處輸入圖片說明

正如您所注意到的,描述標簽可能​​很長,所以我將numberOfLines設置為 0。但是當該描述為空或很小時就會出現問題。 細胞開始相互重疊。 以下是描述為空或較小時的外觀: 在此處輸入圖片說明

如果您注意到,圖片會相互重疊。 我對視圖的約束如下:

  • UIImageView : 通向超級視圖,寬高,垂直居中

  • BookName(頂部的粗體標簽):頂部和尾部到超級視圖,導致UIImageView

  • AuthorName( orange label ): top to BookName, trailing to superview, 通向UIImageView

  • 描述(灰色標簽):尾部和底部到超級視圖,頂部到 AuthorName 並導致UIImageView (書本圖片)

我還提供了Content Hugging and Compression Resistance Priorities 我只為UILabel提供了它們。 我為描述標簽設置了最小的以使其增長和縮小。

我做了什么來解決問題?

我意識到如果描述為空,單元格會變小。 換句話說,標簽決定了單元格的大小。 此外,考慮到UIImageView僅垂直居中這一事實,我認為我的約束不正確。 所以,我決定擺脫垂直居中 UIImageView 我只為UIImageView設置了頂部、前導、寬度和高度約束。 其他約束與上述相同。 但這沒有幫助,結果如下:

在此處輸入圖片說明

如您所見, UIImageView超出了單元格邊界。 我認為這是因為我沒有為UIImageView提供底部約束。 但我提供它作為描述。 因此,下一次嘗試實際上是提供底部約束。 因此,我為UIImageView提供了頂部、左側、底部和寬度約束。 我留下了相同的其他約束。 最初,結果令我感到驚訝。 以下是沒有描述時單元格的外觀: 在此處輸入圖片說明

看起來,一切都很好(無論如何,圖像太小,它試圖適應由標簽控制的單元格大小),但是在滾動UITableView ,單元格正在改變它們的大小並以某種方式更新它們的約束。 這是發生的事情:

在此處輸入圖片說明

我也嘗試過設置estimatedRowHeight和自動尺寸,但沒有幫助,我不認為問題是通過這種方式解決的。 因此,任何幫助表示贊賞。

保持對圖像視圖的約束,導致超級視圖、寬度、高度、垂直居中。 按原樣保留對書名和作者標簽的約束。 現在在細節標簽上將約束作為作者標簽的頂部,拖尾到超級視圖,引導或向左到圖像視圖,底部到超級視圖 對於細節標簽上的底部到超級視圖的約束,在屬性檢查器中將關系更改為大於或等於。 將常量更改為您需要的值。我建議增加常量並進行測試,直到獲得所需的結果。 從大約 20 或 30 開始並測試,然后將值增加到其他值,直到獲得所需的效果。 在此常數的某個值下,您將獲得效果。 希望這可以幫助。

注意:這是假設您的書名標簽和作者標簽至少有一些文本。 它可能會在其他設備上失敗,因此也可以使用大小類來設置不同的約束

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM