3

我的弹出框在 iOS 7 中的尺寸不正确。高度工作正常,但宽度根本没有设置。无论我将其设置为什么,弹出框的宽度都非常窄。它在 iOS 6 中仍然有效,但在 iOS 7 中中断。我需要对 7 中的弹出框做一些新的事情吗?

这是适用于 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 在 iOS 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

1 回答 1

4

此处提供的答案

如何在 iPad 上更改 UIImagePickerController 的大小宽度?

是正确的,除了对于 iOS 7,contentSizeForViewInPopover 属性应该替换为 preferredContentSize 属性。

UIImagePickerController 的委托实现了 UIImagePickerControllerDelegate 和 UINavigationControllerDelegate 协议。

在委托实现中添加以下方法为我解决了 iOS 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);
}
于 2013-12-17T12:46:56.407 回答