【问题标题】:How to adjust uiscrollview after adding view (autolayout)添加视图后如何调整uiscrollview(自动布局)
【发布时间】:2014-12-23 22:10:39
【问题描述】:

UIView 中有一个UIScrollView。我在滚动视图中有容器UIView,它的边缘固定在滚动视图上。并且此容器视图具有常量 widthheight 约束。因为没有它们滚动视图就无法工作。

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

还请考虑我正在使用autolayout

【问题讨论】:

    标签: ios user-interface uiscrollview autolayout nslayoutconstraint


    【解决方案1】:

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

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

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

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

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

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

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

    [self.yourContentView layoutIfNeeded]; 
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多