3

長さの異なるさまざまなテキストを挿入する textView があります。短いものと長いものがあります。UITextView は scrollView のサブビューです。入力したテキストの長さに応じて UITextView の高さを動的に設定するにはどうすればよいですか?

ViewDidLoad のこのコードは機能しません。

self.textView.contentSize = [self.textView.text sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(100, self.textView.contentSize.height) lineBreakMode:UIViewAutoresizingFlexibleHeight];
4

4 に答える 4

3

制約が TextView の現在の contentSize であるため、これは機能しません。必要な最大サイズを入力する必要があります。

たとえば、コードは次のようになります。

#define kMaxHeight 100.f
self.textView.contentSize = [self.textView.text sizeWithFont:[UIFont systemFontOfSize:14] 
                                           constrainedToSize:CGSizeMake(100, kMaxHeight) 
                                               lineBreakMode:UIViewAutoresizingFlexibleHeight];

お役に立てれば

于 2012-10-30T08:20:26.830 に答える
2

以下のコーディングは機能しています。試してみてください

// leave the width at 300 otherwise the height wont measure correctly
UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(10.0f, 0.0f, 300.0f, 100.0f)];

// add text to the UITextView first so we know what size to make it
textView.text = [_dictSelected objectForKey:@"body"];

// get the size of the UITextView based on what it would be with the text
CGFloat fixedWidth = textView.frame.size.width;
CGSize newSize = [textView sizeThatFits:CGSizeMake(fixedWidth, MAXFLOAT)];
CGRect newFrame = textView.frame;

newFrame.size = CGSizeMake(fmaxf(newSize.width, fixedWidth), newSize.height);
textView.frame = newFrame;
于 2015-10-23T08:46:18.990 に答える
1

Calculate string sizeそのfitsUITextView

 [yourString sizeWithFont:yourtxtView.font
              constrainedToSize:CGSizeMake(yourtxtView.frame.size.width,1000)
                  lineBreakMode:UILineBreakModeWordWrap];

Change frameUITextView

 yourtxtView.frame  = CGRectMake(yourtxtView.frame.origin.x,yourtxtView.frame.origin.y,yourtxtView.frame.size.width,yourtxtView.frame.size.height+20);
于 2012-10-30T08:22:16.837 に答える