【发布时间】:2017-10-12 07:43:43
【问题描述】:
我正在尝试使用动画扩展 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
}
}
此解决方案有效,但有一个副作用 - 当动画结束时,UITableViewCell 中的一些元素被隐藏(标题标签)。
我也尝试过在动画结束时调用 tableView.reloadData(),这很有效,但有时也会有副作用。
【问题讨论】:
-
这个问题几乎每天都会被问到,这就是为什么我创建了这个示例项目github.com/bavarskis/ExpandingTableViewCell.git 看看它,很简单。
-
我在我的代码中发现了一个错误,这导致了我提到的副作用之一(点击时阅读更多按钮没有隐藏)。我在 cellForRow 函数中以编程方式创建了阅读更多按钮。问题是,当我多次滚动到该单元格时,每次都会创建按钮,并且只有最后一个创建的按钮被隐藏。
-
@AuRis OP 询问的“阅读更多”按钮/效果在哪里?
-
@AwaisFayyaz 示例项目展示了如何在输入
UITextView时更新单元格高度。基于示例项目,您可以轻松实现 Read More 功能。该项目不是这个特定问题的答案。 -
@filip.karas 你能分享你阅读更多的 textview 代码吗?
标签: ios swift xcode uitableview animation