我将自定义视图添加到嵌入UINavigationController内部的UIPageViewController,因此我需要在UIPageViewController容器内的每个子视图顶部添加一个20.0的填充,以便它们整齐地坐在导航栏。
我目前正在使用UIView的layoutMargins
属性,在视图加载到内存之前在视图上设置新的边缘插入,这是我创建新视图的辅助方法:
private func instanciateViewController(pageType: ViewType) -> UIViewController? {
var pageView : UIViewController?
switch(pageType)
{
case .SHOP :
pageView = storyboard!.instantiateViewControllerWithIdentifier("ShopFloorViewController")
break
case .TASKS :
pageView = storyboard!.instantiateViewControllerWithIdentifier("TaskListTableViewController")
break
case .PERSONNEL :
pageView = storyboard!.instantiateViewControllerWithIdentifier("PersonnelListViewController")
break
}
pageView!.view.layoutMargins = UIEdgeInsetsMake(20, 0, 0, 0)
return pageView
}
行:pageView!.view.layoutMargins = UIEdgeInsetsMake(50, 0, 0, 0)
为第一个加载的屏幕提供正确的插图,但是场景上的任何交互都会导致视图重新渲染而没有插入。
如何在UIPageViewController中永久保存子视图的插图?
答案 0 :(得分:2)
试试这个(我还没有针对这个具体案例进行测试但是很有意义)。在UIPageViewController
覆盖viewWillLayoutSubviews
内。这个方法的默认实现什么都不做,所以只需在里面编写自己的代码。在方法内部,循环遍历子视图并调整边缘插入。希望这应该有用。