以下のコードを使用して、UIImagePickerController のライブ プレビューをスケーリングして画面全体に表示しています。これは今まで完璧に機能しました。数日前に、iPhone 5 に iOS 10 ベータ 7 をインストールしましたが、拡張できなくなりました。UIImagePickerController のビューの下部に黒いパッチが表示されます。and呼び出しcameraViewTransform
を無視しているようです。CGAffineTransformMakeScale
CGAffineTransformMakeTranslation
これがカメラコントローラーを起動する方法です。独自のカスタム オーバーレイ ビューを提供するために、「allowsEditing」と「showsCameraControls」の両方を「NO」に設定しました。
objImagePickerController =[[UIImagePickerController alloc] init];
objImagePickerController.delegate = self;
objImagePickerController.sourceType =UIImagePickerControllerSourceTypeCamera;
objImagePickerController.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;
objImagePickerController.allowsEditing = NO;
objImagePickerController.showsCameraControls= NO;
これは、カメラのライブ プレビューをスケーリングするために使用するものです。
CGSize screenSize = [[UIScreen mainScreen] bounds].size;
float screenHeight= MAX(screenSize.height, screenSize.width);
float screenWidth= MIN(screenSize.height, screenSize.width);
float cameraAspectRatio = 4.0 / 3.0;
float imageWidth = floorf(screenWidth * cameraAspectRatio);
float scale = ceilf((screenHeight / imageWidth) * 10.0) / 10.0;
objImagePickerController.cameraViewTransform= CGAffineTransformMakeScale(scale, scale);
これは、私自身の要件に合わせて、従来のモーダル表示方法ではなく、サブビューとしてカメラ ビューを追加する方法です。
[[[UIApplication sharedApplication] keyWindow]addSubview:objImagePickerController.view];
iOS 10 ベータ 8 で実行されている iPhone 5s のスクリーンショット
iOS 8.2 で動作する iPhone 5s のスクリーンショット
上記のスクリーンショットからわかるように、は iOS 10 ベータ版をcameraViewTransform
尊重しません。CGAffineTransformMakeScale
他の誰かがこの問題に直面しましたか? これは、iOS 10 ベータ OS に見られる非常に奇妙な動作です。これに対する回避策が見つかりません。お知らせ下さい。
注:: objImagePickerController は UIImagePickerController のインスタンスです。