【发布时间】:2018-03-16 11:11:12
【问题描述】:
我有一个 RootViewController,它由两个 UIViewController 组成,它们都是用代码创建的(没有 Storyboard/Nibs)。
第一个 UIViewController 有以下锚点:
weekView.translatesAutoresizingMaskIntoConstraints = false
weekView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
weekView.heightAnchor.constraint(equalToConstant: 100).isActive = true
weekView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
weekView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
另一个 UIViewController 有以下锚点:
daysViewController.view.translatesAutoresizingMaskIntoConstraints = false
daysViewController.view.topAnchor.constraint(equalTo: weekView.bottomAnchor).isActive = true
daysViewController.view.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
daysViewController.view.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
daysViewController.view.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
这使它固定在第一个 UIViewController 的底部并占据了屏幕高度的其余部分(从顶部 UIViewController 到 -100)。
第二个 UIViewController 是一个自定义的 UIPageViewController,它由 UIViewController 的多个子视图组成。
问题
由于某种原因,在 UIPageViewController 中滚动页面时,每个子 ViewController 的帧高度都不正确(例如,与约束告诉它的高度不同)。 相反,框架高度与屏幕高度相同。
三种不同状态下的打印帧高度如下:
viewDidLoad PageViewController frame: (0.0, 0.0, 375.0, 667.0)
viewDidLoad ChildViewController frame: (0.0, 0.0, 375.0, 667.0)
viewWillAppear ChildViewController frame: (0.0, 0.0, 375.0, 667.0)
viewDidAppear ChildViewController frame: (0.0, 0.0, 375.0, 667.0)
我需要 viewDidLoad 中正确的 567 帧大小来正确布局子视图,而不是像在 viewDidAppear 中那样晚。
我该如何解决这个问题? 因为现在我需要考虑到视图框架是屏幕的全高,而不是在创建所有子视图时应该是 567。
【问题讨论】:
标签: ios swift uiviewcontroller frame