【发布时间】:2017-10-13 12:46:25
【问题描述】:
我有一个 UIViewController 作为容器视图控制器。它有一个与屏幕宽度相同的 UIScrollView,但它的高度小于屏幕的高度。
UIScrollView 包含另外两个 UIViewController 的视图,这些视图可以水平滚动。
我这样设置我的 contentSize:
scrollView.contentSize.width = self.view.bounds.width * 2
这可以让我水平滚动 UIViewController 视图。
以下是我如何将 UIViewController 视图添加到我的滚动视图:
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 视图就像全屏视图偏移一样,因此您看不到视图的底部,因为屏幕底部会将它们截断。
【问题讨论】:
-
如果您发布您正在使用的实际代码,或者至少发布一个运行并演示问题的精简版本,这将更容易提供帮助。查看您发布的代码,看起来您将
panelViewController.view的高度设置为view的高度,而您可能希望将其设置为scrollView...或panelView的高度,这变为panelViewController.view的superview。 (使用不那么容易混淆的名称和添加 cmets 也有帮助。)
标签: ios swift uiviewcontroller uiscrollview nslayoutconstraint