UIView从顶部添加填充

时间:2016-02-25 19:53:36

标签: ios swift uiview

我将自定义视图添加到嵌入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中永久保存子视图的插图?

1 个答案:

答案 0 :(得分:2)

试试这个(我还没有针对这个具体案例进行测试但是很有意义)。在UIPageViewController覆盖viewWillLayoutSubviews内。这个方法的默认实现什么都不做,所以只需在里面编写自己的代码。在方法内部,循环遍历子视图并调整边缘插入。希望这应该有用。