如何使用代碼動態更改uitextview內的uitableviewcell的高度而不使用自動佈局?我會有uitableviewcell和uitextview裏面。 uitableviewcell將根據uitextview中的文本進行更改。如何使用代碼動態更改uitextview內的uitableviewcell的高度而不使用自動佈局?
回答
這是我使用的代碼(基於舊的答案),評論描述每個部分:
override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
//width can be customized based on your needs - i have a border of 10 around my textView on the sides
let width = tableView.frame.size.width - 20
if let textView = /* your cell's textView if initialized and presented*/ {
//if textView is available, use `sizeThatFits` to optimize size
let height = textView.sizeThatFits(CGSize(width:width, height: CGFloat.max)).height
return height //in my code I have a minimum threshold enforces via return (height > 65.0) ? height : 65.0
}else{
//if it doesn't exist, use `textViewHeightForText` to simulate as if it did
return textViewHeightForText(/*text to display */, andWidth: width)
}
}
internal func textViewHeightForText(text: String?, andWidth width: CGFloat) -> CGFloat {
//in case you need to know height before cell has been presented (and textView not set up yet), can make one here
let calculationView = UITextView()
//IMPORTANT - have to specify the name/size of your font
let attributedText = NSAttributedString(string: (text != nil) ? text! : "", attributes: [NSFontAttributeName : UIFont(name: "Helvetica Neue", size: 16.0)!])
calculationView.attributedText = attributedText
let height = calculationView.sizeThatFits(CGSize(width: width, height: CGFloat.max)).height
return height
}
沒有顯示出來,因爲它取決於你的模型,方法是:
- 存儲指針到每個已經呈現的textView(最簡單的方法是製作一個
[NSIndexPath : UITextView]
,在cellForRowAtIndexPath
期間設置它並在if let
部分訪問它) - 訪問您的模型以獲取文本t帽子將被顯示,如果
textView
未呈現。這是必要的,因爲它需要在顯示單元之前進行規劃。
完美答案,謝謝 –
我有問題,當我重新加載表和滾動等待數據獲取桌子高度和textview高度都搞亂了,但是在完成後重新加載都很好。這裏有什麼問題? –
沒有圖片我不能確定,但它聽起來像高度可能會返回0沒有文字,它的基礎上的大小。 – sschale
以編程方式使用它。你需要接受autoResizingMask的幫助。您需要爲UItableViewCell的所有4邊定義autoResizingMask爲textview,然後需要檢查文本。您需要爲textview設置SizeToFit屬性。他們是一種方法「 sizeWithFont constrainedToSize:lineBreakMode」,可以返回CGSize的NSString,然後你需要通過方法heightForRowAtIndexpath將高度從這個大小傳遞給UITableviewCell。這將解決您的問題。
- 1. 如何使用自動佈局動態更改UITableViewCell的高度?
- 2. 動態UITableViewCell高度內的動態UITextView?
- 3. 使用自動佈局在UITableView中動態UITextView高度?
- 4. 如何使用自動換行自動更改佈局高度?
- 5. 更改動態UITextView的高度內的UITableViewCell
- 6. 如何使用自動佈局更改uiview的高度?
- 7. 如何使用砌體自動佈局UItableviewCell高度
- 8. 使用動態UITextView,UIImageView和UILabel高地自動佈局
- 9. 的UITableViewCell高度自動佈局
- 10. UITextView更改高度而不是滾動
- 11. 如何使用自動佈局來設置UITableViewCell高度的動畫效果?
- 12. Collectionviewcell自動佈局高度,動態高度,內容高度
- 13. 使用自動佈局的動態高度的網格視圖
- 14. 使用排除路徑時UITextView自動佈局高度
- 15. 動態更改UITextView高度而不是滾動
- 16. 如何使用自動佈局更改UITablewViewCell的寬度?
- 17. 使用UITableViewCells和動態高度自動佈局
- 18. UITextView在UIScrollView中使用自動佈局
- 19. 動態更改的UILabel寬度不與自動佈局
- 20. 使用代碼隱藏動態更改圖像高度
- 21. 如何使用自動佈局設置tableHeaderView(UITableView)的高度?
- 22. 在UITableviewCell中使用自動佈局
- 23. 使用砌體自動佈局UITableViewCell
- 24. 在iPhone中動態更改UITableviewCell高度?
- 25. 如何使用在Swift中使用自動佈局的代碼更改UI佈局?
- 26. UITableViewCell自動佈局寬度不與UIBezierPath一起使用
- 27. UITableViewCell標籤動態顯示/隱藏使用自動佈局
- 28. 使用自動佈局的自定義/動態標籤寬度
- 29. UITableViewCell子類與自動佈局約束不正確的高度
- 30. UITableViewCell動態佈局中的Swift UICollectionView無法更改單元格高度
答案已過時,不推薦使用,您可以將其轉換爲新版本嗎? –
到目前爲止你做了什麼? – Lee
直到sizeWithFont這是棄用,並沒有發現在swift –