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

Я проверил свои контроллеры представления (через построитель интерфейса), и поведение AutoResize деактивировано.
У кого-нибудь есть решение?
Ответ 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.
Надеюсь, это поможет будущим посетителям...
(извините, я должен был, вероятно, прокомментировать принятый ответ, но у меня недостаточно репутации...)