0

我有一个名为 profileDescription 的 UITextView,它位于滚动视图中。我想调整此视图的高度,使其扩展以占用所需的空间。我正在使用打开自动布局的故事板。我尝试将其关闭,但它使其他事情变得更糟,所以我现在将其保持打开状态。

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

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;
4

3 回答 3

3

Autolayout启用该功能后,有一个简单的修复方法。

实现viewDidLayoutSubviews,它将在视图控制器的视图layoutSubviews方法被调用后调用。

示例代码:

- (void)viewDidLayoutSubviews
{
     self.yourTextField.frame = CGRectMake(361, 226, 400, 100);
}
于 2013-03-13T21:23:11.567 回答
0

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

于 2013-03-13T19:48:49.767 回答
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;
于 2013-03-13T20:02:17.880 回答