添加视图后如何调整uiscrollview(autolayout)

问题描述 投票:1回答:1

主要的UIScrollView有一个UIView。我在scrollview中有容器UIView,它的边缘固定在scrollview上。并且此容器视图具有常量widthheight约束。因为没有它们滚动视图不起作用。

当我在容器视图中垂直添加大量子视图时,子视图超出了容器视图的底部边框。它不可滚动导致容器具有相同的预定义高度。如何使容器视图可调,以便它可以匹配子视图高度,使其可滚动。

还要考虑我使用的是autolayout

ios user-interface uiscrollview autolayout nslayoutconstraint
1个回答
1
投票

你真正需要做的是更新高度约束,对吗?

我会将内部视图的高度约束作为IBOutlet链接到ViewController:

@property (nonatomic, weak)     IBOutlet    NSLayoutConstraint *contentViewHeight;
  • 通常拖放到文件的所有者

然后,当您在内部添加子视图时,您需要通过调用该方法来更新Constraint的常量:

- (void)updateContentViewHeight:(CGFloat)height
{
    self.contentViewHeight.constant = height;
    [self.yourContentView layoutIfNeeded]; 
}

如果你可以跟踪整个子视图的高度,那太好了!你只需要将它传递给那个方法。

如果没有,它可能会有点棘手...您可能需要删除高度约束,将您的子视图一个下方添加(只要它们的高度是固定的),而不要忘记“固定”最后一个的底部边框子视图到“内部视图”的底部边框。换句话说,内部视图的高度不是固定的,而是通过其“高度固定”内容的总和来扩展。这样之后:

[self.yourContentView layoutIfNeeded]; 

它的“.frame”应该是它的最终高度

然后,您应该能够更新高度约束或设置滚动视图的内容大小,哪种方式最适合您。

© www.soinside.com 2019 - 2024. All rights reserved.