【问题标题】:UIPageViewController resize child view to reserve space for itselfUIPageViewController 调整子视图的大小为自己保留空间
【发布时间】:2014-07-16 06:48:40
【问题描述】:

我正在为 ios 7.1 开发一个 iPhone 应用程序。 ViewController 层次结构类似于“NavigationController -> UIViewController -> UIPageViewController -> UITableViewControllers”。 NavigationBar 已隐藏。状态栏存在。一切都以编程方式完成。没有使用故事板/Xib。

UIPageViewController 中,我正在创建一个自定义标题视图(类似于导航栏,但在它自己的视图中)。因此子控制器的视图 (UITableView) 应该被推到这个标题视图下面。在将子视图的translatesAutoresizingMaskIntoConstraints 设置为 NO 之后,我尝试添加约束(“V:[TitleView]-0-[ChildView]”)。但这导致了一个空白屏幕(标题视图除外)。更改子视图的框架等都没有任何效果。

除了设置上述标志和添加约束外,我没有添加/修改任何自动布局/自动调整大小相关的设置。该应用程序仅支持纵向模式(主页按钮向下)。也不会有任何其他动态布局更改。感谢您是否可以帮助解决此问题。

【问题讨论】:

    标签: ios iphone resize uipageviewcontroller uicontainerview


    【解决方案1】:

    以下是我目前得到的解决方案。项目搁置了一段时间,现在正在用 Swift 重写。因此,下面的代码很快。

    //in the UIPageViewController
    override func viewDidLayoutSubviews()
    {
        super.viewDidLayoutSubviews()
    
        let scrollView = view.subviews[0] as UIView
        scrollView.frame = CGRectMake(scrollView.frame.origin.x, 64, scrollView.frame.size.width, scrollView.frame.size.height - 64)
    }
    

    基本上,我在标题视图下方移动页面控制器的默认滚动视图并调整其大小。我不得不承认我对这个解决方案不是很满意。我觉得一定有更好的选择。 (为了更安全,您可以迭代子视图以找到滚动视图)。

    【讨论】:

      【解决方案2】:

      查看page view controller 中的自动调整大小约束并将其设置为 false。

      我认为自动调整大小的不是孩子,而是pageviewcontroller 框架。

      【讨论】:

      • “自动调整大小约束”是什么意思?
      • 自动调整大小约束是自动调整视图大小的简单约束。例如,仅给出尾随和前导约束,您将(自动)调整视图的宽度。
      • 它帮助我解决了 pageViewcontroler 动画的问题。 stackoverflow.com/questions/44973910/…
      猜你喜欢
      • 2013-07-20
      • 1970-01-01
      • 1970-01-01
      • 2013-01-22
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      • 2011-03-18
      • 1970-01-01
      相关资源
      最近更新 更多