在我的 Storyboard中,我有一个父 UIScrollView
,其中有一个高度约为 2000px 的 UIView
。
我设计了整个 View ,并在父 ScrollView 的底部放置了另一个 UIView
,以便将其固定在 UI 中。但在特定点,我需要放置 UIView(即固定)来滚动。就像我滚动 UILabel
后,我想滚动其下方的 UIView
并从底部消失。
我知道这很难解释,但我坚持了这么久。
附言我正在使用自动布局
。
最佳答案
在这种情况下,最好将 View 放在 ScrollView 之外,但也将约束连接到内部 View 。您可以使用优先级来控制这些约束。
在您的情况下,您将降低底部约束优先级(例如降低到 500)。您可以添加一个约束,如 outsideView.top <= insideView.bottom
。因此,将外部 View 连接到 ScrollView 内的 View 之一,并创建小于(或大于,如果两个项目颠倒)或等于该视点的关系。
要创建此演示,请启动一个新项目并打开 Main.storyboard:
- 添加 ScrollView ,并对前导、尾随、顶部、底部进行约束
- 添加空白
UIView
(现在称为innerView
)在 ScrollView 内并添加前导、尾随、顶部、底部约束 - 将高度限制添加到
innerView
到2000 - 在
innerView
之间添加等宽约束和你的 ScrollView - 设置
innerView
之间的底部约束并将 View 滚动到 100 - 将不同的颜色设置为
innerView
看看效果 - 所有其他约束应设置为 0
- 添加另一个
UIView
在顶层(现在称为outerView
) - 将外部 View 固定到前导、尾随和底部。还要添加高度限制为 50
- 将不同的颜色设置为
outerView
看看效果。
现在,如果您运行应用程序,您应该在底部有一个可滚动的 ScrollView 和一个固定 View 。
- 现在连接
outerView
与innerView
并选择“垂直间距” - 双击新创建的约束并修改它:
- (如果需要)反转第一个和第二个项目,以便外部 View 是第一个项目
- 将关系更改为“小于或等于”
- (如果需要)选择outerView.top
- (如果需要)选择innerView.bottom
- 将常量设置为零
- 选择
outerView
并找到安全区域(或 super View )的底部约束并将其优先级设置为500。
现在运行应用程序。如果一切正确,您的固定 View 将被固定,直到您向下滚动得足够远。 2000px 可见后,固定 View 将随 ScrollView 滚动。
您可以自然地将其固定到 ScrollView 中的任何 View ,以获得您需要的任何可能的效果。
我希望这已经足够描述性了。祝你好运。
关于ios - 我需要在 UIScrollView 中的特定点之后滚动 Storyboard 中的 float (固定)UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56897898/