MainViewController から modalViewController として UIImagePickerController (sourceTypeCamera) を呼び出しています。ただし、添付の画像が示すように、UIImagePickerController は画面の一番上に表示されません。
これを引き起こしている可能性のあるものと、修正方法はありますか?
7 に答える
何度も試行した後、presentViewController を呼び出すと[[[[UIApplication sharedApplication] delegate] window] rootViewController]
問題が解決することがわかりました。
あなたに役立つかもしれない UIViewController のブール値があります: wantsFullScreenLayout
. ドキュメントによると、これは次のとおりです。
ビューがステータス バーの下に重なるかどうかを示すブール値。
特に iOS 5 では、ビューがステータス バーの下に重なって表示され、特にモーダルで表示された場合に、いくつかの問題がありました。私が見つけた最善の方法は、この値を に設定YES
し、ビューをステータス バーの下に手動でレイアウトすることです。参考までに、ステータスバーの高さは 20 です。
ナビゲーションコントローラー内にあるビューコントローラーの私のアプリケーションでは、次のように単純にやっています:
UIImagePickerController* imagePickerController_;
imagePickerController_.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentModalViewController:imagePickerController_ animated:YES];
と
@interface CustomViewController : UIViewController <UIImagePickerControllerDelegate>
問題なく動作します。それでも問題が解決しない場合は、コードを共有していただけますか? あなたのアプリケーションにはどのようなナビゲーション構造がありますか (tabbarcontroller、navigationcontroller、.. ?)?、imagepickercontroller をどのように提示しますか?
imagePickerController の frame プロパティを変更する必要があります。Ieを初期化するとき
imagePickerController.view.frame.origin.y = 20;
いくつかのコードが役立ちます。
bounds
関連する場合は、プロパティの代わりにプロパティを設定してみてくださいframe
。
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];