我已经在Stack Overflow和Google上进行了多次搜索,但我找不到解决问题的方法。
我有一个产品的详细信息视图,其中包含UIScrollView和一些子视图(UIImageView,UILabel,UITextView)。您可以找到示例here。
首先,我想将UITextView(不是文本本身!)自动调整到相应的高度。然后我想自动调整整个UIScrollView,使其符合我的UITextView及其上方元素的高度。我尝试过以下代码:
myUITextView.frame = CGRectMake(2.0, 98.0, 316.0, self.view.bounds.size.height);
[scrollView setContentOffset:CGPointMake(0.0, 0.0) animated:NO];
scrollView.contentSize = CGSizeMake(320.0, 98.0 + [myUITextView frame].size.height);
[self.view addSubview:scrollView];
98.0 + [myUITextView frame] .size.height)因为我的想法是:在获得myUITextView的高度后,将其他子视图(98.0)的高度添加到它。
不幸的是它不能很好地工作。根据UIScrollView的内容,它太短或太长。我做了一些日志记录,结果是UITextView的高度始终相同:
2010-01-27 14:15:45.096 myApp [1362:207] [myUITextView frame] .size.height:367.000000
谢谢!
答案 0 :(得分:22)
实际上有一种非常简单的方法可以使用contentSize将UITextView的大小调整到正确的高度。
CGRect frame = _textView.frame;
frame.size.height = _textView.contentSize.height;
_textView.frame = frame;
需要注意的一点是,在使用addSubview将UITextView添加到视图中后,只能使用正确的contentSize。在此之前,它等于frame.size
答案 1 :(得分:0)
UITextView不会自动调整其内容的大小(不管怎么说都不知道),所以你需要自己获取文本的大小并相应地调整UIView的大小。
this page上的函数会有所帮助 - 您可以使用它们来获取字符串的宽度和高度,例如
// Get the size that the string will render at
NSString *contents = @"This is the content of your UITextView";
CGSize areaSize = [contents sizeWithFont:myView.font forWidth:myView.frame.size.width lineBreakMode:UILineBreakModeWordWrap];
// Then set the frame of your UITextView to be the right size
myView.bounds = CGRectMake(0, 0, areaSize.width, areaSize.height);
然后,您可以围绕它布局其他组件。
希望这有帮助,
取值
PS警告,指向文档的链接是正确的,但我的代码示例未经测试,抱歉:)