ios - 我需要在 UIScrollView 中的特定点之后滚动 Storyboard 中的 float (固定)UIView

标签 ios swift uiview uiscrollview autolayout

在我的 Storyboard中,我有一个父 UIScrollView,其中有一个高度约为 2000pxUIView

我设计了整个 View ,并在父 ScrollView 的底部放置了另一个 UIView ,以便将其固定在 UI 中。但在特定点,我需要放置 UIView(即固定)来滚动。就像我滚动 UILabel 后,我想滚动其下方的 UIView 并从底部消失。

red area is my fixed 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 。

  • 现在连接outerViewinnerView并选择“垂直间距”
  • 双击新创建的约束并修改它:
  • (如果需要)反转第一个和第二个项目,以便外部 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/

相关文章:

ios - 条件绑定(bind) : if let error – Initializer for conditional binding must have Optional type

ios - 内存增长之谜(Objective-C)

ios - 更改 Safari View Controller 完成按钮色调?

iphone - 如何在选择单元格后立即显示 UIAlert 并在显示新的 UIView 后结束它?

ios - 自定义 UITableViewCell 不显示任何内容

swift - 目标-C 方法 'imagePickerController:didFinishPickingMediaWithInfo:'

ios - 带有 iOS 粗体文本设置的条形按钮项目色调颜色

ios - 表头 View 自动布局问题

swift - 当新的 UITextView 可见时,对按钮进行动画处理并向下移动它们

html - 表单输入的奇怪 iOS 设备特定问题