3

次のコードを使用して、カメラのカスタム オーバーレイを作成しました。

- (void) showCamera {
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
    self.picker = [[UIImagePickerController alloc] init];
    self.picker.sourceType = UIImagePickerControllerSourceTypeCamera;
    self.picker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;
    self.picker.cameraDevice = UIImagePickerControllerCameraDeviceRear;
    self.picker.showsCameraControls = NO;
    self.picker.navigationBarHidden = YES;
    self.picker.toolbarHidden = YES;

    self.overlay = [[CameraOverlayViewController alloc] init];
    self.overlay.pickerReference = self.picker;
    self.picker.cameraOverlayView = self.overlay.view;
    self.picker.delegate = self.overlay;

    [self presentViewController:self.picker animated:NO completion:nil];
}

iPhone 4 では (カメラが画面全体をカバーするため) 正常に動作しますが、iPhone 5 ではカメラが画面の上部にあり、下部に黒い四角が残ります。カメラのサイズを変更できないため、少なくとも画面の中央に配置し、余白として UIView を追加します (カメラが画面の上部にない Apple のカメラ ロール アプリと非常によく似ています。その上と下の両方にコントロールがあります)。

このようなシナリオでカメラフレームを制御するにはどうすればよいですか? また、余白は見やすくするためだけのものなので、iPhone 4 や iPad の画面には表示したくないかもしれません。

前もって感謝します !

4

2 に答える 2

1

カメラは常に画面幅と同じ長さになることがわかっているため、次のようにします。

//カメラの高さを 4:3 の比率で取得

int cameraViewHeight = SCREEN_WIDTH * 1.333;

// 画面の高さとカメラの高さの差を取得します。2で割って分配します。

int adjustedYPosition = (SCREEN_HEIGHT - cameraViewHeight) / 2;

// 画像ピッカー コントローラーを調整します

CGAffineTransform translate = CGAffineTransformMakeTranslation(0, adjustedYPosition);
self.imagePicker.cameraViewTransform = translate;
于 2014-11-10T20:07:11.130 に答える