调整UIView的大小以适应其内容

时间:2012-07-23 18:31:59

标签: iphone ios ipad uiview

问题是,我确实有一个包含3个部分的视图。

第一部分是一个简单的标题 - 总是相同的高度! 第二部分是简单的描述行 - 总是相同的高度!

现在问题是第三部分。对于动态计算的子视图(每个子视图都有自定义控制器),它是 viewContainer 。内容的高度是由从后端下载的一些文本信息引起的动态。所以有时候我需要滚动才能阅读整篇文章,有时候不会。

目前我这样做:

  • 计算特定文本的UILabel大小。
  • 然后调整父视图的大小以适应UILabel(如果更小)。
  • 然后调整我的 3-Part-ViewController-View 的scrollView以适合其子视图。

具有动态内容的详细viewController:

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

所以我的问题是,有更简单的方法吗?

1 个答案:

答案 0 :(得分:0)

您可以创建一个可以完成所需操作的方法。您需要编写一次方法(也许是methodS)并使用它传递必要的参数。