2013-09-22 2 views
7

Я использую UIPopoverController, чтобы открыть окно. Я использую preferredContentSize для установки размера. Затем я использую Push новый контроллер представления с большим размером. Когда открывается дочерний вид, мне нравится восстанавливать окно до исходного размера. Но, похоже, не работает.preferredContentSize не сжимается

Я уже поставил self.preferredContentSize = myWindowSize; Но, похоже, он не может восстановиться.

В iOS6 или ранее я установил contentSizeForViewInPopover в CGSizeZero, а затем установил нужный размер. Но на iOS7 это заставит всплывающее окно исчезнуть.

ответ

0

Единственное решение, о котором я могу думать, заключается в том, чтобы отклонить ваше окно popover и автоматически представить его с новым размером, который вы хотите. У меня также проблемы с iOS 8, где размер контента не будет уменьшаться по высоте. Ширина сжимается, но высота может увеличиться только для меня.

Посмотрите

https://developer.apple.com/library/ios/documentation/uikit/reference/UIPopoverControllerDelegate_protocol/Reference/Reference.html#//apple_ref/occ/intfm/UIPopoverControllerDelegate/popoverController:willRepositionPopoverToRect:inView:

Это может помочь вам переместить прямоугольник с протоколом делегата

Решение:

Хорошо, вот мое решение. С контроллера представления, где вы представляете контроллер popover, вы можете настроить делегат, который называется «resetContentSize: (CGSize) size». например в файле заголовок вашего представления с контроллером:

@protocol PopoverDelegate <NSObject> 
- (void)resetContentSize:(CGSize)size 
@end 

в файле реализация, где вы представляете контроллер поповера, вы можете установить делегат

self.popoverController.delegate = self; 

От контроллера поповера, вы можете добавить PopoverDelegate в Заголовочный файл

@property (nonatomic, weak) id<PopoverDelegate> popoverDelegate; 

и вызвать метод делегата в файле реализации:

[popoverDelegate resetContentSize:CGSizeMake(320.0f,205.0f)]; 
3

Это решило для меня:

override func viewDidAppear(animated: Bool) 
{ 
    navigationController?.preferredContentSize = preferredContentSize 
    super.viewDidAppear(animated) 
} 
Смежные вопросы