我在一個單元格中具有不同內容(視圖,標籤,圖像視圖)的tableView單元格。但在某些細胞內容可能不完整。我如何使用調整大小的單元格而不刪除和添加總是約束?謝謝。如何在不刪除iOS中的約束條件下調整具有不同內容的tableView單元格
回答
一個針對此問題可能的解決方案:
- 爲隱藏狀態添加約束優先1000
- 添加調整大小狀態額外的限制低優先級(前750)
- 保存約束是僅用於隱藏狀態的到
IBOutlet
集合 - 將約束條件保存爲僅將用於調整大小的狀態到另一個
IBOutlet
收集
代碼:
@IBOutlet var hiddenConstraints: [NSLayoutConstraint] = []
@IBOutlet var visibleConstraints: [NSLayoutConstraint] = []
func hide(_ hide: Bool) {
for hiddenConstraint in self.hiddenConstraints {
hiddenConstraint.isActive = hide
}
for visibleConstraint in self.visibleConstraints {
visibleConstraint.isActive = !hide
}
self.layoutIfNeeded()
}
有更快的解決方案:
- 移動內容可以隱藏到容器視圖
- 設置高度約束的容器視圖
- 變化從代碼高度約束常量到0如果隱藏或適當的高度,如果可見
代碼:
@IBOutlet var heightConstraint: NSLayoutConstraint!
func hide(_ hide: Bool) {
self. heightConstraint.constant = hide ? 0 : 150 //Estimated height
self.layoutIfNeeded()
}
這不是一個好辦法,因爲它會導致崩潰的約束在運行時。所以我更喜歡用第一個。
此外,您還需要從表格中更新您的單元格以將其他單元格向上或向下移動。
謝謝,工作良好 –
雷Wenderlich對錶格單元格的動態調整大小一個夢幻般的教程,可以在這裏找到: https://www.raywenderlich.com/129059/self-sizing-table-view-cells
TL; DR你需要確保你的內容在所有四邊固定到單元格的內容視圖,以及設置爲高優先級垂直擁抱,大於或等於您的標籤上的高度限制。
問題是,意見有兩種狀態:隱藏,不隱藏。當它不隱藏時,它具有高度和所有約束,並且單元格不能更小 –
當你說隱藏時,我假設你正在設置隱藏屬性?嘗試爲高度約束添加一個出口,並將其設置爲0以隱藏,然後單元格將按預期調整大小。 –
再次使用約束。否則視圖有頂部和底部約束,正如你所說 - 我需要別人在這些項目的網點,並設置0 –
- 1. 從不同表中刪除具有約束條件的多列
- 2. 具有相同原型單元格的兩個TableView,約束行爲不同
- 3. 如何刪除tableView單元格iOS
- 4. 如何在tableview單元格中間放置一個視圖的約束條件?
- 5. 如何在swift中調整表格單元格內的約束imageView?
- 6. UITableViewController具有不同的單元格大小和Storyboard中的單元格內容
- 7. IOS UICollectionView單元格具有不同的單元格實例
- 8. 如何在不刪除子表的情況下刪除有約束的表?
- 9. TableView不顯示單元格內容
- 10. 動態調整的tableview單元格的高度根據內容 -
- 11. 如何刪除表中的所有默認約束約束條件
- 12. 刪除約束iOS
- 13. TableView單元格內容不會在編輯模式下移動iOS 6
- 14. 具有不同約束條件的Postgres數組
- 15. TableView中每個具有不同佈局的單元格,滾動優化如何?
- 16. 如何在Knockoutjs中合併具有相同內容的表格單元格?
- 17. 刪除單元格內容時刪除鍵被按下
- 18. 如何從tableview行單元格中刪除單獨的行?
- 19. 如何獲取具有不同單元類別的單元格
- 20. TableView不顯示單元格中的內容(Swift)
- 21. 我如何調整與分組的單元格tableview中的單元格
- 22. 給圖像不同的單元格tableview
- 23. 如何刪除Db2中列的默認約束條件
- 24. 如何使用VBA刪除Word中的單元格內容?
- 25. 指定單元格而不刪除它的原始內容
- 26. 當按下tableView單元格時在不同ViewController中打開URL
- 27. 如何在沒有約束檢查的情況下刪除表
- 28. 刪除子類屬性中的所有驗證約束條件
- 29. Vue組件不具約束力風格
- 30. 如何刪除表和約束條件(如果存在)?
這裏是可以幫助你的東西 - http://stackoverflow.com/questions/18065938/how-to-use-auto-layout-to-move-other-views-when-a-view-is-hidden –
我檢查了這裏,這裏是約束的工作,但我有非常多的元素,它可以是非常多的代碼來做到這一點 –