1

iPhone アプリでカメラにカスタム オーバーレイを使用しています。このチュートリアルに従いました。私の問題は、シャッターが開く前にオーバーレイが表示されることです。これは、ユーザーがシャッターでオーバーレイ項目 (ボタン、画像など) を見ることができることを意味します。

タイマーを使って、シャッターが開くアニメーションの時間だけオーバーレイの表示を遅らせようとしましたが、それは正しい方法ではありません。

もっと良いアイデアはありますか?

-(void)onShowCam
{
   NSLog(@"sdadas");

    overlay = [[CustomOverlayView alloc]
           initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGTH)];

    overlay.delegate = self;

   .....
4

2 に答える 2

0

これを使ってみてください

    cameraOverlay=[[ImagePickerController alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGTH)];
         imagePicker.sourceType=UIImagePickerControllerSourceTypeCamera;
         imagePicker.delegate=self;
         imagePicker.showsCameraControls=NO;
         imagePicker.cameraFlashMode=UIImagePickerControllerCameraFlashModeOff;
         [imagePicker setCameraOverlayView:cameraOverlay];

//Show camera
         [self presentModalViewController:imagePicker animated:YES];
于 2013-02-06T08:07:17.837 に答える
0

iPad ではこの問題は存在せず、オーバーレイ ビューはデフォルトでシャッター アニメーションの背後にあります。しかし、iPhone では、オーバーレイが前面に表示されます。

私は自分に合った解決策を見つけました。

このメソッドでは、オーバーレイ ビューをサブビューとして設定する必要があります。

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
    if (!viewController)
        return;

    UIView* controllerViewHolder = viewController.view;
    UIView* controllerCameraView = [[controllerViewHolder subviews] objectAtIndex:0];
    UIView* controllerPreview = [[controllerCameraView subviews] objectAtIndex:0];
    [controllerCameraView insertSubview:self.overlayView aboveSubview:controllerPreview];
}

それが役に立てば幸い

元のソース: http://www.alexcurylo.com/blog/2009/06/18/uiimagepickercontroller-in-3-0/

于 2013-03-05T08:44:48.547 に答える