带有 StackView 和固定页脚的 ScrollView

Posted

技术标签:

【中文标题】带有 StackView 和固定页脚的 ScrollView【英文标题】:ScrollView with StackView and fixed footer outside 【发布时间】:2019-10-29 02:42:21 【问题描述】:

Xcode 10、Swift 5(这应该完全可以在 Storyboard 中实现)

当前布局:

- ChildView (child View of very first default view)
    - ButtonView
        - ScrollView
            - VerticalStackView
                - Button
                - Button
                - ...
    - FooterView
         - HorizontalStackView
            - Button A
            - Button B

我需要什么约束来始终将页脚视图保持在底部并使UIStackView 在其后面滚动,同时仍为UIStackView 中的每个按钮保持固定高度?

【问题讨论】:

【参考方案1】:

此设置似乎引起了多个问题,从内部按钮不可点击(或无法与之交互的UITextFields)到UIScrollView 不可滚动或“内容大小歧义”错误(描述 here) - 只是因为没有正确设置单个约束。

结果:

如果可以同时显示的按钮较少,它将无法滚动,而只是在最后一个按钮下方显示黑色背景。

如何到达:

使用预览窗口下方的“添加新约束”按钮设置约束。

子视图:

尾随/领先/底部:0 到 Superview 等高:到安全区域: 按住 Control 从 ChildView 拖动到安全区域并选择“等高”

1.页脚视图:

尾随/领先/底部:0 到 Superview 身高:等于 50 顶部到按钮视图: 按住 Control 从 FooterView 拖动到 ButtonView 选择“顶部” 单击新约束以在检查器中将其打开(FooterView.Top 等于 ButtonView.Bottom)

2.按钮视图:

尾随/前导/顶部:0 到 Superview 从底部到 FooterView(上面已经解释过)

2.1.滚动视图(黑色):

尾随/前导/底部/顶部:0 到 Superview Bottom/Top 约束使 ScrollView 不会“溢出”

2.1.1。垂直堆栈视图:

对齐/分布:填充 尾随/前导/底部/顶部:0 到 Superview 与 ButtonView 等宽: 按住 Control 从 VerticalStackView 拖动到 ButtonView 并选择“等宽” 这会禁用 ScrollView 的水平滚动条

2.1.1.1。按钮(灰色):

身高:50 VerticalStackView 负责其余的工作

当然你也可以用视图替换“UIScrollView”中的按钮来创建某种类型的表单。

【讨论】:

以上是关于带有 StackView 和固定页脚的 ScrollView的主要内容,如果未能解决你的问题,请参考以下文章

react.js - 处理固定页眉和页脚的 React-router

将导出查询作为带有页眉和页脚的文本访问

jquery 移动面板的固定页脚

在 iPhone 中显示带有页眉和页脚的 .doc 文件

在iOS7中具有固定页眉和页脚的网页上的滚动问题

php 带有页眉和页脚的Laravel打印