78

アプリの 1 つを iOS 6.1 から iOS 7 に移植しています。UITextView幅が固定されているレイアウトを使用していますが、高さは contentsize に基づいています。iOS 6.1 の場合、contentsize.height を確認して textview のフレームの高さとして設定するだけで十分でしたが、iOS 7 では機能しません。

UITextView次に、表示されているテキストに基づいて、固定幅で動的な高さの を作成するにはどうすればよいですか?

注: これらのビューは、Interface Builder ではなく、コードから作成しています。

4

9 に答える 9

42

これは、iOS6および7でうまくいきました:

CGSize textViewSize = [self.myTextView sizeThatFits:CGSizeMake(self.myTextView.frame.size.width, FLT_MAX)];
    self.myTextView.height = textViewSize.height;
于 2013-10-09T13:19:29.350 に答える
15

この小さな機能を使用してください

-(CGSize) getContentSize:(UITextView*) myTextView{
    return [myTextView sizeThatFits:CGSizeMake(myTextView.frame.size.width, FLT_MAX)];
}
于 2013-10-13T00:37:55.260 に答える
3

この方法を使用すると、より簡単な解決策があります。

+(void)adjustTextViewHeightToContent:(UITextView *)textView;
{
    if([[UIDevice currentDevice].systemVersion floatValue] >= 7.0f){
        textView.height = [textView.layoutManager usedRectForTextContainer:textView.textContainer].size.height+2*fabs(textView.contentInset.top);
    }else{
        textView.height = textView.contentSize.height;
    }
}

UPD : テキストを表示するためだけに機能します (isEditable = NO)

于 2013-10-02T13:00:10.440 に答える
1
   _textView.textContainerInset = UIEdgeInsetsZero;
   _textView.textContainer.lineFragmentPadding = 0;

lineFragmentPadding を忘れないでください

于 2016-08-08T03:25:54.840 に答える