3

Мои popovers неправильно изменяются в iOS 7. Высота работает нормально, но ширина не устанавливается вообще. Попкор имеет очень тощую ширину, независимо от того, что я установил. Он по-прежнему работает в iOS 6, но ломается в iOS 7. Есть ли что-то новое, что мне нужно делать с popovers в 7, которое мне не хватает?UIPopoverController Width Not Setting

Вот код, который работает в IOS 6, а не IOS 7:

self.mediaPicker = [[UIImagePickerController alloc] init]; 

self.mediaPicker.contentSizeForViewInPopover = CGSizeMake(self.view.frame.size.width, self.view.frame.size.height);  
self.cameraPickerPopover = [[UIPopoverController alloc] initWithContentViewController:self.mediaPicker];  
self.cameraPickerPopover.popoverContentSize = CGSizeMake(self.view.frame.size.width, self.view.frame.size.height); 
self.cameraPickerPopover.delegate = self; 
[self.cameraPickerPopover presentPopoverFromRect:self.toolbar.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:animated]; 

Я узнал contentSizeForeViewInPopover осуждается в прошивке 7, поэтому я обновил код следующим образом, и он по-прежнему не работает:

if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) { 
    self.mediaPicker.contentSizeForViewInPopover = CGSizeMake(self.view.frame.size.width, self.view.frame.size.height);  
} else { 
    self.mediaPicker.preferredContentSize = CGSizeMake(self.view.frame.size.width, self.view.frame.size.height); 
} 

ответ

4

ответ предоставляется здесь

How to change the size width of UIImagePickerController on iPad?

является правильным, за исключением того, что для iOS 7 свойство contentSizeForViewInPopover должно быть заменено свойством preferredContentSize.

Делегат UIImagePickerController реализует протоколы UIImagePickerControllerDelegate и UINavigationControllerDelegate.

Добавления следующего метода в реализации делегата решает эту проблему в прошивке 7 для меня:

- (void)navigationController:(UINavigationController*)navigationController willShowViewController:(UIViewController*)viewController animated:(BOOL)animated 
{ 
    if (SYSTEM_VERSION_GREATER_THAN(@"7.0")) 
    viewController.preferredContentSize = CGSizeMake(800,800); 
    else 
    viewController.contentSizeForViewInPopover = CGSizeMake(800, 800); 
}