如何将UIScrollView的“主要”内容设置为屏幕高度 - “次要”内容“低于首屏”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将UIScrollView的“主要”内容设置为屏幕高度 - “次要”内容“低于首屏”相关的知识,希望对你有一定的参考价值。

我一直在用这一个撞到墙上一段时间。

我有一个单一的视图应用程序,它的主要内容显示在滚动视图中 - 最初,以便可以轻松实现拉动刷新。这是使用故事板和AutoLayout约束来实现和实现的。

我有一个我想要实现的新功能,但是我不希望它始终可见,我希望它显示在滚动视图中的“主要”内容下面。这样,用户必须滚动主视图才能看到额外的内容。我编写了一个小图表,希望能比文字更好地传达这个:

UIScrollView Diagram

我试过简单地将辅助内容放在最后一个主要内容块下面,并使用垂直约束 - 这可以让你滚动到它,但是一旦你放手,滚动视图就会快速回到它的原始位置。

有关如何解决这个问题的任何提示都非常欢迎,谢谢!

编辑:

这是我尝试过的简化层次结构:

  • UIScrollView中 滚动内容 主要内容视图 内容... 次要内容视图 内容...

我认为困难是因为我希望主内容视图成为屏幕的全高。

答案

您可能必须在滚动视图中定位视图,并设置scrollView的contentSize

查看控制器

@IBOutlet weak var scrollView: UIScrollView!

let height = UIScreen.main.bounds.height
let width = UIScreen.main.bounds.width

override func viewDidLoad() {
    super.viewDidLoad()
    /* Set the contentSize of the scrollview */
    self.scrollView.contentSize = CGSize(width: width, height: height*2)

    /* Adding two views, red, green at different locations inside the scrollview */
    let red = UIView(frame: CGRect(x: 0, y: 0, width: width, height: height))
    red.backgroundColor = UIColor.red

    let green = UIView(frame: CGRect(x: 0, y: height, width: width, height: height))
    green.backgroundColor = UIColor.green

    /* Adding the views in the scrollview */
    self.scrollView.addSubview(red)
    self.scrollView.addSubview(green)

}

演示

Example

另一答案

将主视图的内容分离为2部分向上部分,其是具有屏幕高度的视图和具有次要部分中的内容高度的底部部分

ScrollView
      contentView -> equal width of screen
          topView -> equal height of screen
          secondaryView -> equal height of it's subview 

以上是关于如何将UIScrollView的“主要”内容设置为屏幕高度 - “次要”内容“低于首屏”的主要内容,如果未能解决你的问题,请参考以下文章

将动态高度设置为 UIScrollView Swift

当 UIScrollView 位于自定义 UITableViewCell 中时,将 UIScrollView 的内容大小设置为其框架宽度

iOS - UIScrollView 内容大小设置为零

如何使用 uiscrollview 向上滚动?

如何将 UIScrollView 的背景图片设置为可拉伸图片?

使用 UIScrollView,在缩小时,如何将内容视图保持在中心?