我从我的 MainViewController 调用 UIImagePickerController (sourceTypeCamera) 作为 modalViewController。但是,UIImagePickerController 并没有填满顶部的屏幕,如所附图像所示。 知道是什么原因造成的,以及如何解决?
7 回答
[[[[UIApplication sharedApplication] delegate] window] rootViewController]
经过多次尝试,我发现从解决问题的方法中调用 presentViewController 。
您应该更改 imagePickerController 的 frame 属性。初始化ie时
imagePickerController.view.frame.origin.y = 20;
一些代码会有所帮助。
如果相关,请尝试设置bounds
属性而不是frame
属性。
在我的应用程序中,它位于 navigationController 内部的视图控制器中 - 我正在做这样的事情:
UIImagePickerController* imagePickerController_;
imagePickerController_.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentModalViewController:imagePickerController_ animated:YES];
和
@interface CustomViewController : UIViewController <UIImagePickerControllerDelegate>
工作没有问题。如果您仍然有问题,那么您可以分享一些代码吗?你的应用程序有什么样的导航结构(tabbarcontroller,navigationcontroller,..?)?,你如何呈现 imagepickercontroller?
UIViewController 上有一个布尔值可能对您有用:wantsFullScreenLayout
. 根据文档,这是:
一个布尔值,指示视图是否应在状态栏下方。
我遇到了几个问题,尤其是在 iOS 5 上,视图位于状态栏下方,尤其是在模态显示时。我发现最好的方法是将此值设置为YES
,并在状态栏下方手动布置视图。仅供参考,状态栏的高度为 20。
称呼
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
打电话之前
[self presentModalViewController:picker animated:YES]
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
[self.view addSubview:imagePicker.view];
[imagePicker viewWillAppear:YES];
[imagePicker viewDidAppear:YES];
[[UIApplication sharedApplication] setStatusBarHidden:NO animated:NO];