2016-07-22 62 views
0

我正在使用UITextView来显示一些数据。我需要根据其内容计算UITextView的高度。我试过contentSize.height,但它不适合我。 有没有人有这个解决方案? 这是我用AutoLayout编写的代码。我已与插座如何根据iOS 9中的内容获取UITextView高度

CGFloat height= _myTextView.contentSize.height; 
_heightConstraint.constant = height; 
+1

您是否获得了正确的身高值?当你改变约束时,你需要做[self layoutIfNeeded] –

+0

是的,我已经试过它layoutIfNeeded – user3306145

回答

0

第一大小的文本视图与内容的高度约束:

[yourtTextView sizetofit]; 

然后得到的观点与高度:

double textViewHeight = yourtTextView .frame.size.height; 
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); 
0

只需添加

[self layoutIfNeeded]

您计算出的高度后,你应该是好的。

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

+0

感谢您的答复,但我已经这样做。还是行不通。 – user3306145

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 
    } 
0

TextView的当文本视图滚动enabeld 变化,在通过取消滚动故事板是不知道其内容的允许或代码中加入这样的:

textview.scrollEnabled = false 

这将使textView知道它的内容,并且它会根据其内容在高度上增长或缩小。