2011-06-29 8 views
3

カスタムボタンとツールバーを表示するために作成したカスタムUIViewがあります。私が最初にそれを表示するよう呼びかけたとき、バーはシャッターの上にあります(それは良いです)。しかし、カメラがロードされた後、シャッターがその前に来て開きます。カメラシャッターがカスタムUIViewの前に表示されますか?

ネイティブcamera.appを見ると、これは行われません。ツールバーはその間ずっとそこにとどまっています。ここに私のコードは次のとおりです。

// .h 

UIImagePickerController *theCamera; 
@property (nonatomic, retain) UIImagePickerController *theCamera; 


// .m 

theCamera = [[UIImagePickerController alloc] init]; 
theCamera.delegate = self; 
theCamera.sourceType = UIImagePickerControllerSourceTypeCamera; 
theCamera.showsCameraControls = NO; 
theCamera.toolbar.alpha = 0; 
theCamera.navigationBarHidden = YES; 
theCamera.toolbarHidden = YES; 
theCamera.wantsFullScreenLayout = YES; 
theCamera.cameraViewTransform = CGAffineTransformMakeScale(1.25, 1.25); 

UIImageView *tabBarBack = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"tab_bar_back.png"]]; 
tabBarBack.frame = CGRectMake(0, 422, 320, 58); 
[customView addSubview:tabBarBack]; 

theCamera.cameraOverlayView = customView; 
[self presentModalViewController:theCamera animated:YES]; 

はもちろん、私はcustomViewに追加する多くのボタンがありますが、あなたはコンセプトを得ます。

答えて

0

AFAIKこれを行う直接的な方法はありません。 cameraOverlayを使用すると、完全な画面のシャッターが得られます。
プレビュー画面を親ビューとして作成するのに役立ついくつかの代替方法(ビュー階層で遊んでいます)はいつまでありますか。 このアプローチがアプリストアのガイドラインに従って正しいかどうかはわかりません。
これを達成する方法をよりよく理解するために、Hide/Show iPhone Camera Iris/Shutter animationをご覧ください。アイリスオープンアニメーションが始まるときには

AVCaptureSessionDidStartRunningNotification 

1

はを購読します。この間にcameraOverlayViewを追加すると、アイリスによって適切に覆われます。それはそのPLと同じ時間に掲示されます...個人の通知。これは、アプリの拒否を危険にさらすことのない文書化されたアプローチです。 iOSの6+で

0

、あなたはUIImagePickerControllerのための代理人としてあなたのコントローラを追加した場合、このコードは、シャッターがあなたのcameraOverlayViewの後ろにとどまることを保証しなければならないが:

- (void) navigationController:(UINavigationController*) navigationController willShowViewController:(UIViewController*) viewController animated:(BOOL) animated { 
    self.imagePickerController.cameraOverlayView = ...; // your camera overlay view 
} 

私はのバージョンでテストしていませんiOS 6より前のiOS。

関連する問題