在autolayout的情况下,IOS scrollview模糊的可滚动内容高度

时间:2015-02-02 06:55:00

标签: ios objective-c uiscrollview autolayout

您好我正在开发小型IOS应用程序,其中我正在使用带有自动布局的scrollview。内部滚动我正在添加两个视图。我正在使用IB和自动布局约束。我以纵向方式一个接一个地添加两个视图。我添加了外部约束,如尾随,前导,顶部,底部空间。我还为两个视图添加了高度限制。直到这一切都运转良好。

但我的view1有一些动态内容。出于这个原因,我想使高度约束大于等于而不是等于。

enter image description here

enter image description here

那么如何解决这个问题。需要一些帮助。谢谢。

2 个答案:

答案 0 :(得分:22)

您应该遵循以下方法。 首先,这里有一些关于滚动视图的重要事项,这对于自动布局非常重要:

  1. UIScrollView自动更改其边界。
  2. UIScrollView需要一个内容视图(在用户界面中)来获取滚动的内容大小,这对于自动布局来说非常顺畅。
  3. UIScrollView的顶部和底部约束应该连接到顶部和底部布局指南(对于大多数情况,不是全部)。
  4. 根据您的问题:

    第一种方法:您有UIScrollView,因此只需在其中插入一个UIView并将其视为内容视图。之后,将两个UIViews放入UIView(内容视图)。

    所以层次结构是:MainView - > UIScollView - > UIView(ContentView) - > firstView&第二视图。现在我们将为所有人提供约束。

    • 对于UIScrollView,将TOP和BOTTOM约束连接到TOP&底部布局指南以及主视图的引导和跟踪。
    • 对于UIView(内容视图),将约束LEADING,TRAILING,TOP,BOTTOM赋予UIScrollView以及为适合滚动的contentView提供显式高度(正常高度约束)非常重要(例如1200)。同时使其在容器中水平居中。
    • 现在为您的第一个视图提供约束:LEADING,TRAILING,TOP到ContentView并给出明确的高度(正常高度约束)。现在不要尝试将其修改为大于相等 - 我们稍后会这样做。然后,约束第二个视图领先,跟踪到ContentView,从顶部到FirstView,从底部到内容视图和显式高度(你想要什么)。现在,尝试从等于修改第一个视图的高度约束 - >大于平等 - 它肯定会奏效。

    第二种方法(简单和简单):按照第一点给出约束后,为了动态更改第一个View的高度,您可以创建一个第一个视图的高度约束的IBOutlet到您的类,并根据您的要求,您可以更改约束的任何方法或按钮操作中的常量值(根据您想要的第一个视图的高度),因此它将在运行时更改。你也可以认为这是一个很好的技巧,当你想要隐藏你的视图,所以只需将它们的高度约束常量更改为0,这样它将隐藏,并在取消隐藏时,再次将相同的常量值设置为所需的值,这样你也可以轻松玩隐藏和取消隐藏功能的视图,这在其他方面的自动布局中有点困难。

答案 1 :(得分:0)

我会将此约束设为类型equals,并将其置于低优先级。然后,在添加动态内容期间,您可以添加具有更高优先级的另一个约束。

如果从xib加载此UIView,请确保提供具有更高优先级的约束。