无法将自动布局约束添加到 UIPageViewController

Posted

技术标签:

【中文标题】无法将自动布局约束添加到 UIPageViewController【英文标题】:Can't Add Autolayout Constraints To UIPageViewController 【发布时间】:2014-08-08 09:35:34 【问题描述】:

我有一个带有容器的 UIView,在该容器中我有一个 UIPageViewController,它具有可以滑动浏览的视图,类似于 iPhone 上的 Apple Stocks 应用程序。

我正在尝试使用此功能进行所有自动布局,但 UIPageViewController 不允许我添加自动布局约束。

以下代码的最后一行得到一个“'UIPageViewController' 的不可见@interface 声明选择器'addConstraints'。

NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(self.con_pageViewController);
NSArray *constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"[conPageViewController]"
                                                               options:NSLayoutFormatAlignAllBaseline
                                                               metrics:nil
                                                                 views:viewsDictionary];
[self.pageViewControllerPortrait addConstraints:constraints];

但是,如果我不设置某些内容,UIPageViewController 会接管整个页面,如下图所示。整个视图有一个浅绿色背景,容器是粉红色背景,UIPageViewController 有一个橙色背景,(在代码中设置),我想在 UIPageViewController 中显示的视图是棕褐色,(我认为)。

如您所见,UIPageViewController 采用了整个视图,并且该视图旨在显示以下内容。

如果我将 UIPageViewController 的框架设置为其容器的大小,则如下所示。我觉得如果我不能向 UIPageViewController 添加约束,那么从长远来看,这种方式是最好的。

self.pageViewControllerPortrait.view.frame = self.con_pageViewController.frame;

如果我对 UIPageViewController 的框架进行硬编码,我可以获得我想要的大小,但是我不明白的是容器是 220px,但我需要将 UIPageViewController 设置为 284px 的高度才能填充容器.

self.pageViewControllerPortrait.view.frame = CGRectMake(0, 0, 320, 284);

如果有人能解释这里发生了什么,将不胜感激。

如果有帮助,这在 Interface Builder 中的外观如何。

【问题讨论】:

【参考方案1】:

好吧,我是个白痴,将 UIPageViewController 添加到我的视图中,而不是我的容器视图中。

【讨论】:

以上是关于无法将自动布局约束添加到 UIPageViewController的主要内容,如果未能解决你的问题,请参考以下文章

将子类 UIView 添加到具有自动布局约束的 Nib

如何使用自动布局(约束)将子视图添加到 UIPageViewController?

无法在 Xcode 中为启动屏幕设置自动布局约束

如何将自动布局约束添加到 tableview headerView 内的多行 UILabel?

以编程方式将自动布局约束添加到恒定宽度和高度的子视图

尽管添加了自动布局约束,但 UIScrollView 不滚动