如何设置UIScrollView' main'内容为屏幕高度 - 中等'内容'低于折叠'

时间:2018-01-05 00:43:54

标签: ios swift xcode uiscrollview autolayout

我现在已经用这个把头撞到了墙上一段时间了。

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

我有一个我想要实现的新功能,但我不希望它始终可见,我希望它显示在' main'滚动视图中的内容。这样,用户必须滚动主视图才能看到额外的内容。我已经制作了一个小图表,希望能够比文字更好地表达这一点:

sources

我尝试使用垂直约束将辅助内容放在最后一个主要内容块下面 - 这可以让您滚动到它,但滚动视图会在您放手后快速恢复到原始位置。 / p>

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

编辑:

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

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

我认为难以产生,因为我希望主内容视图成为屏幕的全高。

2 个答案:

答案 0 :(得分:2)

您可能需要在滚动视图中定位视图,并设置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

答案 1 :(得分:1)

将主视图的内容分为2部分,这部分是具有屏幕高度的视图和具有次要部分内容高度的底部

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