1

我有一个 UITextView,我想根据它的内容动态调整它的大小。

由于某种原因,文本视图总是比它的内容短!这是代码:

_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(白色)太短了。如果我把更多或更少的内容放在那里,那么短是一样的,即

更多文字少文字

我确定这很简单,但我无法解决。

4

3 回答 3

0

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

于 2012-11-01T20:31:23.883 回答
0

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

首先,我使用情节提要添加了一个 UITextView,然后我也使用情节提要将 textView 嵌入到 UIScrollView 中,然后将每个视图与情节提要的插座连接起来。在视图控制器内部,这是我得到的:

#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
于 2012-11-14T01:27:43.867 回答
0

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

我的解决方案是添加以下代码:

    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:视图生命周期方法中,它立即调整大小以适合其内容。不幸的是,这种调整大小发生在视图已经出现之后,这意味着用户看到了它的发生。

例子:

- (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;
}
于 2013-10-09T15:29:27.797 回答