【问题标题】:UIView add padding from topUIView 从顶部添加填充
【发布时间】:2016-02-26 05:33:15
【问题描述】:

我正在向嵌入在 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 中子视图上的插图永久化?

【问题讨论】:

    标签: ios swift uiview


    【解决方案1】:

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

    【讨论】:

    • 完美,就像一个魅力。看起来每当发生交互时都会调用layoutSubviews。不敢相信我没想到要试试这个:)
    • 每次由于任何原因需要重绘子视图时都会调用它,包括旋转。所以确保你也测试旋转。
    • 知道了,我是 iOS 新手,所以这对我来说是一个学习曲线。我想我需要阅读更多关于视图生命周期文档的内容......再次感谢
    猜你喜欢
    • 2013-01-29
    • 2012-07-15
    • 1970-01-01
    • 1970-01-01
    • 2014-07-30
    • 2019-06-13
    • 1970-01-01
    • 2016-10-06
    • 2019-06-19
    相关资源
    最近更新 更多