Не удается добавить ограничения автомакета в UIPageViewController

У меня есть UIView с контейнером, в этом контейнере у меня есть UIPageViewController, который будет иметь представления, которые вы можете прокручивать, подобно приложению Apple Stocks на iPhone.

Я пытаюсь использовать все Autolayout с этим, но UIPageViewController не позволяет мне добавлять ограничения Autolayout.

Последняя строка следующего кода получает «Нет видимого @interface для« UIPageViewController », объявляет селектор« 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, я смогу получить нужный размер, однако я не понимаю, что контейнер имеет размер 220 пикселей, но мне нужно установить для UIPageViewController высоту 284 пикселей, чтобы он заполнил контейнер.

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

введите здесь описание изображения

Если бы кто-нибудь мог объяснить, что здесь происходит, это было бы очень признательно.

Как это выглядит в Interface Builder, если это поможет.

введите здесь описание изображения


person William Robinson    schedule 08.08.2014    source источник


Ответы (1)


Итак, я был идиотом и добавил UIPageViewController в свое представление, а не в представление контейнера.

person William Robinson    schedule 08.08.2014