尝试将UITextView的大小调整为其contentSize。不应该是ContentSize总是30

时间:2013-11-10 04:47:49

标签: ios objective-c

我有一个uitextview,我正在尝试根据其中的文本调整大小。我使用以下代码:

[self.view addSubview:storyText];
[storyText sizeToFit];
[storyText layoutIfNeeded];
[storyText setScrollEnabled:NO];
CGRect frame = storyText.frame;
frame.size.height = storyText.contentSize.height;
frame.size.width = 280;
storyText.frame = frame;

框架肯定正在调整大小,但问题是,它根据有多少行没有调整大小,而是总是调整到30的高度。使用NSLog,我确定contentSize已设置无论textview中有多少行,都为30。我是否需要手动设置contentSize,还是根据内容占用的空间计算自己?如果是这样,为什么它总是在这里设置为30?

更新: 我按照建议尝试了以下内容,但是没有用。

[storyText setScrollEnabled:NO];
[storyText sizeToFit];
[storyText sizeThatFits:CGSizeMake(280,CGFLOAT_MAX)];
[storyText layoutIfNeeded];

CGRect storyFrame = storyText.frame;
storyFrame.size.height = storyText.contentSize.height;
storyFrame.size.width = 280;
storyText.frame = storyFrame;

还有其他建议吗?

1 个答案:

答案 0 :(得分:0)

我尝试使用你的代码。我的代码:

UITextView *txtView = [UITextView new];
txtView.text = @"some_big_text_some_big_text_some_big_text_some_big_text_some_big_text_some_big_text_some_big_text_some_big_text_some_big_text_some_big_text_some_big_text_some_big_text_";
txtView.scrollEnabled = NO;
[c.view addSubview:txtView];

CGSize size = [txtView sizeThatFits:CGSizeMake(280,CGFLOAT_MAX)];
txtView.frame = CGRectMake(.0f, .0f, size.width, size.height);

我得到了正确的textview高度。你能试试吗?