2016-07-22 16 views
0

私はUITextViewを使ってデータを表示しています。その内容に応じてUITextViewの高さを計算する必要があります。私はcontentSize.heightを試しましたが、それは私のためには機能しません。 誰にもこれに対する解決策がありますか? ここに私のコードはAutoLayoutです。あなたはiOS 9の内容に応じてUITextViewの高さを取得する方法

double textViewHeight = yourtTextView .frame.size.height; 
+1

正しい高さの値を取得していますか?あなたは制約を変更するには、あなたは[self layoutIfNeeded]をする必要があります –

+0

はい私は既にそれを試しましたlayoutIfNeeded – user3306145

答えて

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

こともできますし、ビューの高さを取得後

[yourtTextView sizetofit]; 

:私は口

CGFloat height= _myTextView.contentSize.height; 
_heightConstraint.constant = height; 
0

ちょうど

[self layoutIfNeeded]

を追加し、あなたは大丈夫でなければなりません。

もしそうでなければ、私に戻ってきてください。

textview.scrollEnabled = false 

これが行います:テキストビューのスクロールはスクロールのチェックを外すことにより、ストーリーボードでは、これを追加することで有効またはコードであること 変更をenabeldされたときのTextViewがその内容を認識していない

+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はその内容を認識し、その内容に基づいて高さが増減します。

関連する問題