Ios 如何将子视图调整为UIScrollView内容大小?

Ios 如何将子视图调整为UIScrollView内容大小?,ios,swift,uiviewcontroller,uiscrollview,nslayoutconstraint,Ios,Swift,Uiviewcontroller,Uiscrollview,Nslayoutconstraint,我有一个UIViewController,它充当容器视图控制器。它有一个与屏幕宽度相同的UIScrollView,但其高度小于屏幕高度 UIScrollView包含另外两个UIViewController的视图,这些视图可以水平滚动 我将contentSize设置为: scrollView.contentSize.width=self.view.bounds.width*2 这可以工作,并允许我在UIViewController视图中水平滚动 以下是如何将UIViewController视图添加

我有一个UIViewController,它充当容器视图控制器。它有一个与屏幕宽度相同的UIScrollView,但其高度小于屏幕高度

UIScrollView包含另外两个UIViewController的视图,这些视图可以水平滚动

我将contentSize设置为:

scrollView.contentSize.width=self.view.bounds.width*2

这可以工作,并允许我在UIViewController视图中水平滚动

以下是如何将UIViewController视图添加到我的scrollView:

private func addPanel(viewController: UIViewController, panel: Panel) {

    let xOffset: CGFloat!
    switch panel {
    case .left:
        xOffset = 0.0
    case .right:
        xOffset = self.view.bounds.width
    }

    let panelView = UIView(frame: CGRect(x: xOffset, y: 0, width: self.view.bounds.width, height: self.scrollView.bounds.height))

    scrollView.addSubview(panelView)

    let panelViewController: UIViewController! = viewController

    var viewBounds = view.bounds
    viewBounds.height = panelView.bounds.height

    panelViewController.view.frame = view.bounds
    panelView.addSubview(panelViewController.view)
    addChildViewController(panelViewController)
    panelViewController.didMove(toParentViewController: self)
}
由于某些原因,UIViewController视图不会调整大小以适应UIScrollView的高度

我应该基于约束来做吗?我该怎么做呢。我已经为此挣扎了几天,现在不知所措


基本上,UIViewController视图将与全屏视图一样偏移,因此您无法看到视图的底部,因为屏幕底部将其截断。

我只是猜测一下,不知道所有代码,但是一个原因可能是,如果您在scrollview布局之前添加子视图控制器

添加并设置子视图大小后,scrollview会根据手机大小调整其大小,但您永远不会更新子视图

我的建议是将子视图控制器添加到scrollview中,但将帧设置代码移动到布局方法中,您知道视图具有正确(可见)的帧/边界

如果您是在视图控制器中编写的,一种方法可以是
-viewdilayoutsubviews


希望这是有意义的,如果没有,请随意问更多的问题。

如果您发布了您正在使用的实际代码,或者至少发布了一个运行并演示问题的精简版本,那么会更容易提供帮助。查看您发布的代码,似乎您正在将panelViewController.view的高度设置为
视图的高度,而您可能希望将其设置为
滚动视图的高度。。。或
panelView
,它将成为
panelViewController.view
的超级视图。(使用不太容易混淆的名称和添加注释也会有所帮助。)