UITextView内容大小太短

我有一个UITextView,我想dynamicresize取决于其内容。

出于某种原因,textview总是比它的内容更短! 代码如下:

_textView.text = [NSString stringWithFormat:@"Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test "]; CGRect frame = _textView.frame; frame.size.height = _textView.contentSize.height; _textView.frame = frame; 

结果如下:

UITextView太短

正如你所看到的UITextView(白色)太短了。 如果我把更多或更less的内容放在那里,那么短小也是一样的

更多的文字少文本

我相信这是简单的,但我不能解决。

我在iOS7中使用故事板也遇到了同样的问题。

我的解决scheme是添加此代码:

  CGRect newTextViewFrame = self.textView.frame; newTextViewFrame.size.width = self.textView.contentSize.width + self.textView.contentInset.right + self.textView.contentInset.left; newTextViewFrame.size.height = self.textView.contentSize.height + self.textView.contentInset.top + self.textView.contentInset.bottom; self.textView.frame = newTextViewFrame; 

viewDidAppear:视图生命周期方法中,它的大小被立即调整以适应其内容。 不幸的是,这个resize发生在视图已经出现,这意味着用户看到它发生。

例:

 - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; CGRect newTextViewFrame = self.textView.frame; newTextViewFrame.size.width = self.textView.contentSize.width + self.textView.contentInset.right + self.textView.contentInset.left; newTextViewFrame.size.height = self.textView.contentSize.height + self.textView.contentInset.top + self.textView.contentInset.bottom; self.textView.frame = newTextViewFrame; } 

在调整其框架之前,将UITextView添加到主视图(addSubview)中(请参阅此问题 )

我在这里find了答案: https : //stackoverflow.com/a/2487402/255463 ,然后我这样做:

首先,我添加一个使用故事板的UITextView,然后我将textViewembeddedUIScrollView,使用故事板,然后用故事板连接每个视图。 在视图控制器子类内,我得到了:

 #import "DetailViewController.h" @interface DetailViewController () @property (weak, nonatomic) IBOutlet UITextView *textView; @property (weak, nonatomic) IBOutlet UIScrollView *scrollView; @end @implementation DetailViewController @synthesize textView = _textView; @synthesize scrollView = _scrollView; - (void)viewDidLoad { [super viewDidLoad]; self.textView.text = [NSString stringWithFormat:@"Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test "]; CGRect frame = self.textView.frame; frame.size.height = self.textView.contentSize.height; self.textView.frame = frame; self.scrollView.contentSize = CGSizeMake(320.0, self.descriptionView.contentSize.height + 147.0); } @end