Я создал приложение на основе страницы, которое уже имеет несколько представлений. RootViewController отвечает за настройку макета приложения и делает все хорошо, за исключением одного — размера представления.
Вот часть того, что у меня есть
// Configure the page view controller and add it as a child view controller
self.pageViewController = UIPageViewController(
transitionStyle: .Scroll,
navigationOrientation: .Horizontal,
options: nil
);
self.pageViewController.delegate = self;
// Setup the initial page
let startingViewController = self.modelController.viewControllerWithProfileProvider(
self.profileProviderPreference(),
storyboard: self.storyboard
);
self.pageViewController.setViewControllers(
[startingViewController as BrowsingViewControllerBase] as [AnyObject],
direction: UIPageViewControllerNavigationDirection.Forward,
animated: false,
completion: { done in }
);
self.pageViewController.dataSource = self.modelController;
self.addChildViewController(self.pageViewController);
self.view.addSubview(pageViewController.view);
// Set the page view controller's bounds using an inset rect so that self's view is visible around the edges of the pages
self.pageViewController.view.frame = self.view.bounds;
// Notify the page view controller that we just moved to it. This is a framework imposition. See the docs.
self.pageViewController.didMoveToParentViewController(self);
// Add the page view controller's gesture recognizers to the view controller's view so that the gestures are started more easily.
self.view.gestureRecognizers = self.pageViewController.gestureRecognizers;
Весь остальной код в контроллерах обрабатывает поведение, а не аспект, поэтому все остальное я настраиваю с помощью Storyboard. Метод viewControllerWithProfileProvider: возвращает правильное представление, которое отображается на экране, но не правильно. Вот что у меня есть в раскадровке:

Затем я меняю цвет и метку кнопки в соответствии с указанным провайдером (например, Facebook, Twitter, LinkedIn...). Но я получаю это:

Обратите внимание, как кнопка находится за пределами экрана. Я бы предположил, что self.pageViewController.view.frame = self.view.bounds; является ключевой строкой для этого, но я не уверен, что использовать. Как сделать так, чтобы мои представления отображались правильно?