Ios 如何将子视图调整为UIScrollView内容大小?
我有一个UIViewController,它充当容器视图控制器。它有一个与屏幕宽度相同的UIScrollView,但其高度小于屏幕高度 UIScrollView包含另外两个UIViewController的视图,这些视图可以水平滚动 我将contentSize设置为: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视图添加
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
的超级视图。(使用不太容易混淆的名称和添加注释也会有所帮助。)