我試圖用動畫展開UITextView,當用戶點擊閱讀更多按鈕時,它會在下面展開。在UITableViewCell中展開UITextView高度(閱讀更多效果)
我已經嘗試了很多的方法,並提出了幾乎工作液:
func readMore() {
self.tableView.beginUpdates()
cell.descTextViewHeightConstraint.constant = cell.descTextView.expectedHeight()
self.tableView.endUpdates()
}
的UITextView +身高
extension UITextView {
func expectedHeight() -> CGFloat {
let textView: UITextView = UITextView(frame: CGRect(x: 0, y: 0, width: self.frame.size.width, height: CGFloat.greatestFiniteMagnitude))
textView.font = self.font
textView.text = self.text
textView.sizeToFit()
return textView.frame.height
}
}
此解決方案,但是有一個sideeffect - 當動畫結束時,隱藏UITableViewCell中的一些元素(標題標籤)。
我也試圖在動畫完成時調用tableView.reloadData(),它可以工作,但有時也有副作用。
幾乎每天都會問到這個問題,這就是爲什麼我創建了這個示例項目https://github.com/bavarskis/ExpandingTableViewCell.git看看它,它非常簡單。 –
我在我的代碼中發現了一個錯誤,導致我提到的一個副作用(點擊時按鈕讀取更多並未隱藏)。我在cellForRow函數中以編程方式創建了read more按鈕。問題在於,當我不止一次滾動到該單元格時,該按鈕每次都會創建,並且只有最後創建的那個被隱藏。 –