22

ビューに UIImagePickerController サブビューを追加するとすぐに、ステータス バーが消えて元に戻せなくなります。ステータスバーを表示したままにする方法はありますか?

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];
4

6 に答える 6

29

カメラアプリでも同じことをしなければなりませんでした。どうやら、ステータス バーを非表示にしないように設定するだけでなく、カメラ ビューによって非表示になった後にスタイルをリセットする必要もあります。これを試して:

[[UIApplication sharedApplication] setStatusBarHidden:NO animated:NO];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackTranslucent animated:YES];
于 2010-09-21T18:24:59.343 に答える
6

これを読んで、答えがどれもうまくいかなかったことがわかった後、私は次のことを行うことでそれをうまく動かすことができました:

• UIImagePickerController のデリゲートを設定する• そのデリゲートで、デリゲートの関数
でステータス バーを非表示にします。navigationController:didShowViewController:animated:

例えば:

-(void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
    [[UIApplication sharedApplication] setStatusBarHidden:NO];
}
于 2012-06-16T08:07:38.773 に答える
1

UIImagePicker をルート ビュー (つまり、Navigation Controller または TabbarController) に追加します。

[self.tabBarController presentModalViewController:imagePickerController animated:YES];

その後、使用できます

- (void)imagePickerController:(UIImagePickerController *)picker 
            didFinishPickingImage:(UIImage *)image
                      editingInfo:(NSDictionary *)editingInfo
{
      // do your stuff
     [picker dismissModalViewControllerAnimated:YES];
}

ImagePicker を閉じます。

于 2010-08-22T16:54:27.983 に答える
0

iOS5.1.1で機能するソリューションはありませんでしたTimのソリューションはiOS4.2.1で機能しましたiOS5.1.1で問題を修正できた唯一の方法はそのようなものでした

-(void)viewDidAppear:(BOOL)animated
{
    double delayInSeconds = 0.01;
    dispatch_time_t popTime = 
            dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
    [[UIApplicationsharedApplication] setStatusBarHidden:NO];
});

これは非常にハッキーで間違っています。

半日かけて解決策を探した後、AVFoundationアプローチを使用することにし、AVCaptureSessionとAVCaptureStillImageOutputを使用して必要なものと同じ基本的な写真キャプチャを実装するのに1時間かかりました。また、それもうまく機能します-AVCaptureSessionはUIImagePickerControllerよりも速く起動し、AVCaptureVideoPreviewLayerはUIImagePickerカメラプレビューと比較して最新のデバイスではるかに優れたフレームレートを備えています。

于 2012-09-02T08:25:12.427 に答える
0

これを行うべきではないことはわかっていますが、UIImagePickerController をサブクラス化する場合は、それをカスタム クラスに入れることができます。

-(void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];
    [[UIApplication sharedApplication] setStatusBarHidden:NO];
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackTranslucent animated:YES];
}
于 2011-02-05T20:09:35.787 に答える