Bezdepbonusu7Программирование: статьи и ответы

Вопрос

UIPopoverController странное поведение при изменении размера

Автор вопроса: MartinОтветов: 3

Я разработал статическую библиотеку для iPhone, используя UINavigationController и несколько UIViewController.

Я реализую способ, позволяющий разработчикам iPad включать мою библиотеку в свои приложения для iPad. Для этого я хочу отобразить контроллеры моей библиотеки в UIPopoverController, размер которого равен размеру iphone.

Это я разработал, но каждый раз, когда я нажимаю новый viewController, Popover очень странно изменяет свой размер:

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

Я проверил свои контроллеры представления (через построитель интерфейса), и поведение AutoResize деактивировано.

У кого-нибудь есть решение?

iosipadwindow-resizeuipopovercontroller

Ответы

Ответ 1 · рейтинг 5 · Khanh

UIViewController, отображаемый UIPopoverViewController, должен установить это свойство:

contentSizeForViewInPopover

чтобы указать отображаемый размер, а размер UIPopoverViewController изменится в соответствии со значением этого свойства. Например:

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.contentSizeForViewInPopover = self.view.frame.size;
    // Do any additional setup after loading the view from its nib.
}

Ответ 2 · tipycalFlow

Насколько я понимаю вашу проблему, размер всплывающего окна изменяется всякий раз, когда вы нажимаете контроллер на UINavigationController, который является корневым контроллером вашего UIPopoverController. Я не могу сказать, почему это происходит, но вы можете избавиться от этого, отправив ссылку вашего popoverController (popoverControllerReference, вы можете создать ссылку singleton) на ваш контроллер представления и вручную установив popoverContentSize всякий раз, когда вы нажимаете контроллеры: popoverControllerReference.popoverContentSize = CGSizeMake(320, 460);

Ответ 3 · static0886

В принятом ответе используется метод, который устарел в iOS 7.0.

У меня была такая же проблема, и я успешно использовал popoverContentSize.

Кое-что об этом ниже:

[_popoverSegue.popoverController setPopoverContentSize:CGSizeMake(320.0f, 460.0f)];

где _popoverSegue - экземпляр UIStoryboardPopoverSegue.

Надеюсь, это поможет будущим посетителям...

(извините, я должен был, вероятно, прокомментировать принятый ответ, но у меня недостаточно репутации...)

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы