如何根据iOS 9中的内容获取UITextView高度

时间:2016-07-22 14:45:33

标签: ios objective-c autolayout uitextview

我正在使用UITextView来显示一些数据。我需要根据其内容计算UITextView的高度。我试过contentSize.height,但它对我不起作用。 有人有解决方案吗? 这是我的AutoLayout代码。我已经用插座

设置了高度限制
CGFloat height= _myTextView.contentSize.height;
_heightConstraint.constant = height;

5 个答案:

答案 0 :(得分:0)

首先使用以下内容将文本视图调整为内容:

[yourtTextView sizetofit];

然后使用以下方法获取视图的高度:

double textViewHeight = yourtTextView .frame.size.height;

答案 1 :(得分:0)

您可以使用以下方法计算文本的高度,对我来说非常适合:

CGSize maximumTextViewSize = CGSizeMake(textView.frame.size.width, CGFLOAT_MAX);

NSStringDrawingOptions options = NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesLineFragmentOrigin;
NSDictionary *attr = @{NSFontAttributeName: [your font and font size]};

CGRect textViewBounds = [theText boundingRectWithSize:maximumTextViewSize
                                              options:options
                                           attributes:attr
                                              context:nil];

CGFloat height = ceilf(textViewBounds.size.height);

答案 2 :(得分:0)

添加

[self layoutIfNeeded]

在计算出身高后,你应该没事。

如果没有,请回到我身边。

答案 3 :(得分:0)

func heightForView(text:String, font:UIFont, width:CGFloat, xpos:CGFloat) -> CGFloat {
        let label:UILabel = UILabel(frame: CGRectMake(xpos, 0, width, CGFloat.max))
        label.numberOfLines = 0
        label.lineBreakMode = NSLineBreakMode.ByWordWrapping
        label.font = font
        label.text = text

        label.sizeToFit()
        return label.frame.height
    }

答案 4 :(得分:0)

当文本视图滚动被添加时,textView不知道其内容 通过取消选中Scrolling启用或通过添加以下代码来改变故事板中的内容:

textview.scrollEnabled = false

这将使textView知道其内容,并且它将根据其内容增加或缩小高度。