问题是,我确实有一个包含 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);
所以我的问题是,有没有更简单的方法可以做到这一点?