【问题标题】:Fill Vertical Space of UIScrollView填充 UIScrollView 的垂直空间
【发布时间】:2018-10-04 17:07:54
【问题描述】:

我正在开发一个具有UIScrollView 的布局,我想要做的是在可滚动区域的顶部固定一个标签,并将一个按钮固定在底部,空间最少两者之间。

这个想法是,如果标签的高度增加,按钮将被向下推,以便用户必须向下滚动才能找到它。但是,如果标签很短,它和按钮之间的空间应该扩大,以便按钮停留在可滚动区域的底部。

下面是我的意思的粗略模型:

注意:第二张是在一直滚动到UIScrollView底部之后,我希望滚动到顶部时隐藏按钮;即,不能简单地将按钮放在滚动视图下方。

【问题讨论】:

  • 使用大小决定滚动视图内容大小的内容视图。将按钮固定到内容视图的底部。给内容视图一个最小的高度,但如果标签变得太大,则增加它。不清楚困难在哪里。
  • 如果您不想添加更改约束常量的代码,您只能使用自动布局来执行此操作。

标签: ios xcode user-interface


【解决方案1】:

您只需使用自动布局即可实现所需的结果,而无需通过代码更改约束。步骤如下:

1) 创建您的滚动视图并将其固定到各个方面:

2) 添加一个视图,它将作为内容视图,到滚动视图并固定它:

3) 你的标签和按钮将被添加到这个 contentView 中,但在我们这样做之前,我们必须向 contentView 添加 2 个额外的约束。为 contentView 的宽度和高度创建约束,使其与 SafeArea 相等。您应该将等高约束的优先级设置为低 (250):

4) 在 contentView 中添加标签和按钮。标签固定在顶部,按钮固定在底部;

5) 最后,在标签和按钮之间添加垂直间距约束。将按钮和标签之间所需的最小空间量设置为此约束的常数,例如 8,并将关系设置为大于或等于:

这样,如果标签的高度增加,按钮将被向下推,因此用户必须向下滚动才能找到它。

【讨论】:

  • 很好的解决方案,感谢您通过分步说明进行解释 - 易于以编程方式复制。如果出现键盘(我的顶部项目是文本字段而不是标签),知道如何使垂直间距约束动态化,从而没有那么多空白空间吗?
  • @Anthony 您可以将 contentView 的底部约束保存为变量,并将其偏移量更新为等于键盘出现时的高度。为此,您必须在每次键盘高度变化时聆听键盘变化并更新此约束。要么根据键盘的高度更新滚动视图的contentInset。因此,内容将始终考虑键盘的高度。
猜你喜欢
  • 2010-11-23
  • 1970-01-01
  • 2013-03-12
  • 2017-02-22
  • 1970-01-01
  • 1970-01-01
  • 2015-05-16
  • 2014-06-16
相关资源
最近更新 更多