【问题标题】:Setting a tableViewCell and TextView sizes dynamically in Swift 1.2在 Swift 1.2 中动态设置 tableViewCell 和 TextView 大小
【发布时间】:2016-01-09 08:07:35
【问题描述】:

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

sizeToFit 和固定到 superview 不起作用。

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

感谢您的帮助

【问题讨论】:

    标签: ios swift uitableview height uitextview


    【解决方案1】:

    解决此问题的最佳方法是根据您要显示的字符串的大小来计算 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 个侧面来设置正确的约束,一切都应该正常。

    【讨论】:

    • 通过正确的约束,您的意思是将其固定到所有四个空间的超级视图(单元格内容视图)?
    • 天哪,谢谢博,我已经做了好几个小时了,你的解决方案非常有效。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多