3

カメラ画面にオーバーレイを追加する昔ながらの方法を使用していましたが、うまくいきました。しかし、3.1 が出てから、Apple は私が API を使ってオーバーレイを追加するように主張しています。すぐにオーバーレイが機能するようになりましたが、カスタム オーバーレイを使用すると、移動とサイズ変更の画面が応答しなくなり、使用または再撮影しかできず、実際にサイズ変更と移動ができないようです。私が使用しているコードは以下のとおりです。いくつかのバリエーションを試しましたが、実際に移動とサイズ変更を有効にする唯一の方法は、カスタム オーバーレイ ビューを追加する行を削除することです。

何か案は?

UIImage *image = [UIImage imageNamed:@"camera-template-long.png"];
UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)] ;
imgView.image = image;

UIView *overlayView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
overlayView.opaque = NO;
[overlayView addSubview:imgView];

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

[self presentModalViewController:picker animated:YES];
4

3 に答える 3

3

両方のallowsEditing/showsCameraControlsプロパティをNOに設定し、元のビューをに準備して、メソッドcameraOverlayViewを使用しますtakePicture

その後、imagePickerController:didFinishPickingMediaWithInfo:直接呼び出されます。


次のコードを試してください。

- (void)foo {
  UIImagePickerController *controller = [[[UIImagePickerController alloc] init] autorelease]; 
  controller.sourceType = UIImagePickerControllerSourceTypeCamera; 
  controller.cameraOverlayView = self.cameraOverlay; 
  [self performSelector:@selector(moveOverlayViewToSublayer:) withObject:controller afterDelay:0.1f]; 
  controller.delegate = self; 
  [self presentModalViewController:controller animated:YES]; 
}
- (void) moveOverlayViewToSublayer:(UIImagePickerController*)controller { 
  CALayer *aLayer = self.cameraOverlay.layer.superlayer; 
  controller.cameraOverlayView = nil; 
  [aLayer addSublayer:self.cameraOverlay.layer]; 
}

私はそれがうまくいくことを願っています。

于 2010-01-06T16:52:27.360 に答える
3

[overlayView setUserInteractionEnabled:NO];オーバーレイビューが入力を処理しないように使用すると、問題全体が解消されます。

于 2010-10-11T16:37:02.533 に答える
0

http://www.techques.com/question/1-10178214/cameraOverlayView-prevents-editing-with-allowsEditing

これは私にとって完璧に機能します。userInteractionEnabled を無効にしようとしましたが、無駄でした。

于 2014-02-05T02:54:48.843 に答える