【发布时间】:2012-07-22 00:46:18
【问题描述】:
问题是,我确实有一个包含 3 个部分的视图。
第一部分是一个简单的标题 - 始终保持相同的高度! 第二部分是一个简单的描述行 - 始终保持相同的高度!
现在问题是第三部分。它是动态计算的子视图(每个子视图都有一个自定义控制器)的 viewContainer。内容的高度是动态的,由从后端下载的一些文本信息引起的。所以有时我需要滚动才能阅读整个文本,有时不需要。
目前我正在这样做:
- 计算特定文本的 UILabel 的大小。
- 然后调整父视图的大小以适合 UILabel(如果更小)。
- 然后调整我的 3-Part-ViewController-View 的滚动视图的大小以适合其子视图。
具有动态内容的详细视图控制器:
self.labelDescription.text = self.customData.descriptionText;
[self.labelDescription sizeToFit];
if(self.view.frame.size.height < (self.labelDescription.frame.size.height + self.labelDescription.frame.origin.y)) {
CGRect newSize = CGRectMake(0,
0,
self.view.frame.size.width,
self.labelDescription.frame.size.height +
self.labelDescription.frame.origin.y);
self.view.frame = newSize;
}
添加和调整我的详细视图后滚动视图的大小调整:
[self addChildViewController:controllerCustomData];
[self.scrollView addSubview:controllerCustomData.view];
CGRect newRect = CGRectMake(0,
self.viewElementDetailContentContainer.frame.origin.y,
controllerCustomData.view.frame.size.width,
controllerCustomData.view.frame.size.height);
controllerCustomData.view.frame = newRect;
self.scrollView.contentSize = CGSizeMake(self.scrollView.contentSize.width, newRect.origin.y + newRect.size.height);
所以我的问题是,有没有更简单的方法可以做到这一点?
【问题讨论】: