无法调整UITextView的大小

时间:2013-03-13 19:34:45

标签: iphone ios xcode

我有一个名为profileDescription的UITextView,它位于滚动视图中。我想调整这个视图的高度,以便它扩展以占用所需的空间。我正在使用故事板与Autolayout打开。我尝试将其关闭,但它使其他事情变得更糟,所以我现在暂时离开它。

我正在尝试使用以下代码,但它没有效果:

self.profileDescription.text = @"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";

[self.profileDescription setScrollEnabled:NO];

CGRect frame = self.profileDescription.frame;
frame.size.height = self.profileDescription.contentSize.height;
self.profileDescription.frame = frame;

3 个答案:

答案 0 :(得分:3)

Autolayout功能开启时,有一个简单的解决方法。

实施 viewDidLayoutSubviews ,在调用视图控制器的视图layoutSubviews方法后调用。

示例代码:

- (void)viewDidLayoutSubviews
{
     self.yourTextField.frame = CGRectMake(361, 226, 400, 100);
}

答案 1 :(得分:0)

在设置文本之前尝试显式设置UITextView的框架,看看是否有任何区别。 UITextView需要知道文本视图的宽度,以便它可以正确地确定contentSize.height应该是什么。

答案 2 :(得分:0)

根据我的理解,您希望UITextView扩展到文本的大小,以使其垂直大小与文本一样高。

您需要计算文本的高度并相应地设置垂直大小(注意:我使用UILabel而不是UITextView对项目进行了调整,我还没有测试过这个版本):

CGSize maxLabelSize = CGSizeMake(somewidth, 9999);
CGSize expectedSize = [yourText sizeWithFont:textView.font constrainedToSize:maxLabelSize lineBreakMode:NSLineBreakByWordWrapping];
CGRect newFrame = textView.frame;
newFrame.size.height = expectedSize.height;
textView.frame = newFrame;