11

そこで、iOS 7 用のアプリを更新しようとしていますが、カスタム オーバーレイで問題が発生しています。オーバーレイは、私が写真をフレーミングしている画像です (ライブとフル解像度バージョンを使用して、カメラロールの最終結果をフレーミングします)。問題は、iOS 7 では、オーバーレイは下部が透明でありながら、通常の「写真を撮る」ボタンへのアクセスを提供しますが、何らかの理由で「写真を使用」または「再撮影」ボタンをタップできないことです。写真がスナップされた後に表示されます。ビューコントローラーを呼び出すコードスニペットは次のとおりです。

- (IBAction)takePhoto:(UIButton *)sender {

UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.allowsEditing = NO;
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
picker.showsCameraControls = YES;

// Overlay Creation
UIView* overlayView = [[UIView alloc] initWithFrame:picker.view.frame];
    overlayView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"PBOverlayView.png"]];
    [overlayView.layer setOpaque:NO];
    overlayView.opaque = NO;

picker.cameraOverlayView = overlayView;

[self presentViewController:picker animated:YES completion:NULL];

}
4

4 に答える 4

12

もう 1 つの方法は、ImagePicker の状態が変化したときに通知を確認し、[写真を使用] 画面に移動したときにオーバーレイを削除 (または無効化) することです。

- (void) addPhotoObservers {
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(removeCameraOverlay) name:@"_UIImagePickerControllerUserDidCaptureItem" object:nil ];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(addCameraOverlay) name:@"_UIImagePickerControllerUserDidRejectItem" object:nil ];
}

- (void) removePhotoObservers {
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

-(void)addCameraOverlay {
    if (self.cameraPicker) {
        self.cameraPicker.cameraOverlayView = self.myCameraOverlayView;
    }
}

-(void)removeCameraOverlay {
    if (self.cameraPicker) {
        self.cameraPicker.cameraOverlayView = nil;
    }
}
于 2014-06-30T01:18:15.777 に答える
8

オーバーレイビューに設定できます;)私にとってはうまくUser Enteraction EnabledいきますNO

于 2016-11-03T21:55:32.963 に答える
5

あなたの問題: overlayView を初期化したときに、フレームをピッカーと同じサイズに設定しました。 UIView* overlayView = [[UIView alloc] initWithFrame:picker.view.frame];

説明: 画像をキャプチャする前に、カメラ ボタンは overlayView のフォアグラウンドにあるため、ボタンを押しても問題はありません。画像をキャプチャした後 (「プレビュー ページの再取得/使用」)、overlayView が前面に表示されるため、ボタンへのアクセスがブロックされます。これが iOS7 の問題であることはわかっていますが、他のバージョンについてはわかりません。

考えられる解決策: これは Apple の UIImagePickerController 固有の問題であるため、考えられる解決策は 2 つだけです。(2) これらのボタンを覆うためにオーバーレイが必要な場合でも、構成の疲れるオプションがありますself.imagePicker.showsCameraControls = NO;が、カメラの動作をすべてカスタマイズする必要があります (Web で多くの例を見つけることができます)。

于 2013-11-25T11:27:56.043 に答える