UIImagePicker无法在iOS 3.1.3上执行全屏转换

时间:2011-09-08 14:23:42

标签: iphone uiimagepickercontroller ios-3.x

我正在修改我的iphone应用程序,使其向后兼容iOS 3.1.3。我允许用户从照片库加载图像。我使用以下代码呈现图像选择器:

UIImagePickerController* content = [[UIImagePickerController alloc] init];
content.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
content.delegate = self;
[self presentModalViewController:content animated:YES];
[content release];

这适用于ios 4.0+。但是,在ios 3.1.3上,图像选择器永远不会出现,我收到以下警告:

Can't perform full-screen transition. The fromViewController's view must be 
within a view that occupies the full screen.

在这种情况下,fromViewController是导航控制器中的可见视图控制器。使用以下代码段在appDelegate didFinishLaunchingWithOptions中设置导航控制器:

MyViewController* root = [[MyViewController alloc] initWithNibName:nil bundle:nil];
UINavigationController *aNavigationController = [[UINavigationController alloc] initWithRootViewController:root];
aNavigationController.delegate = self;    
[window addSubview:aNavigationController.view];

在尝试加载图像选择器之前,导航控制器中会显示另一个视图控制器。因此,在加载图像选择器时,两个视图控制器位于导航堆栈中。

基于另一篇文章,我尝试使用根视图控制器和导航控制器作为fromViewController(呈现图像选择器的控制器)。行为是一样的。

我想知道问题是否与导航控制器的modalPresentationStyle无法在iOS 3.1.3中设置有关。对于iOS 3.2+,我将演示文稿样式设置为UIModalPresentationFullScreen。我相信这是以前iOS的默认设置。但是,我之所以怀疑,仅仅是因为我得到的警告涉及全屏视图。

任何人都可以提供任何其他建议吗?我无法找到任何Apple文档来解决从ios 3.x到4.0的UIImagePicker或UINavigationController的更改。

提前致谢!

1 个答案:

答案 0 :(得分:0)

当视图控制器位于导航控制器内时,我通常会这样做:

imagePicker = [[UIImagePickerController alloc]init];
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
imagePicker.delegate = self;

[self.navigationController presentModalViewController:imagePicker animated:YES];

希望它适合你!