限制动态UIScrollView

时间:2017-03-25 09:23:18

标签: ios swift autolayout storyboard scrollview

我有UIScrollViewUILabel个,其中我不知道执行前的内容。所有内容都嵌入UIView(滚动工作)。

我还有一个UIImageView位于顶部。所以布局大致如此

-------------------
|                 |
|   UIImageView   |
|                 |
|     UILabel     |
|                 |
|     UILabel     |
|                 |
|     UILabel     |
|                 |
|     UILabel     |
|                 |
-------------------

所有UIView都是水平居中的,前导和尾随空格为20.每个UILabel的顶部和底部空格都为20.

现在出现了当前的问题。我希望UIImageView具有不同的顶部空间,具体取决于屏幕尺寸。如果我有一个固定的顶部空间,比方说20,那么一切正常。但是如果我尝试设置一个范围,让我们说lessOrEqualTo 50和greaterOrEqualTo 10,那么我会得到一个约束错误,说滚动视图需要y位置或高度的约束。

那么如何设置顶部空间的范围而不会出现约束错误?

编辑:这些是我目前的限制: Constraints

2 个答案:

答案 0 :(得分:0)

您有两种选择。 1)您可以拥有固定的图像高度和可调节的顶部空间 2)您可以调整图像高度和固定顶部空间

否则,os如何确定这些因素?试想一下。

答案 1 :(得分:0)

实际上,UIScrollView高度是按其内容计算的。例如,

scrollview.height = imageView.top + imageView.height + label1.top + label1.height + label2.top + label2.height + label2.bottom

这一切都必须在运行时保持不变,你可以改变它们的值,但它不能像你给出 lessOrEqualTo 50和greaterOrEqualTo 10 的约束一样动态。因为在这种情况下,它无法如上所述预测scrollview.height

  

<强>建议

  1. 获取outlet顶部约束的imageView.top并更改其constant值。
  2. 将乘数提供给imageView.top。它会根据您的屏幕高度自动排列。
  3. 如果您需要任何进一步的帮助或详细信息,可以询问。

    希望我的回答可以帮到你。