在Swift 1.2中动态设置tableViewCell和TextView大小

时间:2015-10-11 23:08:49

标签: ios swift uitableview height uitextview

我知道这个问题已被提出,但没有一个答案对我有用。我正在尝试实现一个注释视图控制器,类似于你在Instagram中可以看到的,其中tableView单元格的大小取决于注释的大小。所以我虽然得到必要的高度来在textView中显示整个注释而不滚动,调整textView,然后在最终重新加载表之前使用它来适当地设置heightForRowAtIndexPath。但是,我甚至无法调整textView的大小,我已经测试了一定数量的答案,而且textView仍然不会让步。

sizeToFit并固定到superview不起作用。

关于我如何做到这一点的任何想法?

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

解决此问题的最佳方法是根据您希望显示的字符串大小计算tableviewcell的大小。

不要使用textView的大小,因为它在显示之前并不真正了解其内容。

尝试这个来获得字符串的高度:

func calculateHeightForString(inString:String) -> CGFloat
{
    var messageString = inString
    var attributes = [UIFont(): UIFont.systemFontOfSize(15.0)]
    var attrString:NSAttributedString? = NSAttributedString(string: messageString, attributes: attributes)
    var rect:CGRect = attrString!.boundingRectWithSize(CGSizeMake(300.0,CGFloat.max), options: NSStringDrawingOptions.UsesLineFragmentOrigin, context:nil )
    var requredSize:CGRect = rect
    return requredSize.height  //to include button's in your tableview
 }

取自最常见的答案:Dynamically size uitableViewCell according to UILabel (With paragraph spacing)

然后,您需要做的就是为tableviewcell添加填充到该高度结果。

只要通过将textview固定到tableViewCells内容视图的所有4个边来设置正确的约束,就可以解决所有问题。