Представления не отображаются правильно с раскадровкой

Я создал приложение на основе страницы, которое уже имеет несколько представлений. 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; является ключевой строкой для этого, но я не уверен, что использовать. Как сделать так, чтобы мои представления отображались правильно?


person André Fratelli    schedule 10.07.2014    source источник
comment
Похоже, скриншот тоже из раскадровки iPad. Если у вас не настроено автоматическое изменение размера, оно будет отключено, если вы используете раскадровку iPad для iPhone.   -  person LyricalPanda    schedule 10.07.2014
comment
Пойди, посмотри видео про размерные классы с WWDC14.   -  person dasdom    schedule 10.07.2014
comment
@LyricalPanda, как мне это изменить? Я создал проект для iPhone...   -  person André Fratelli    schedule 10.07.2014
comment
Это не раскадровка для iPad. Размерный класс вида обычный. Вы можете добавить ограничение или изменить класс размера. Пожалуйста, посмотрите видео. Это все там. И многое другое.   -  person dasdom    schedule 10.07.2014


Ответы (2)


Щелкните поле и перетащите вверх и оставьте всплывающее окно, выберите Верхнее пространство в верхний макет. сделайте то же самое как с правой, так и с левой стороны и выберите начальный и конечный пробелы соответственно. Запустите свое приложение, надеюсь, это поможет

person v1shnu.mee    schedule 10.07.2014

Я думаю, вам нужно использовать , я мучился с тем же Но Autolayout Спаси меня от этого.

person Jasmin    schedule 10.07.2014