iOS 8 で iPad カメラを使用しているときに問題が発生しています。ベータ版のときから、いくつかの古い質問とApple Developer Forums のスレッドを見てきましたが、まだ解決策が見つかりません。
この問題には 2 つの部分があるようです。
1)デバイスの向きが回転すると、カメラ自体が回転します。たとえば、世界が横になっています
2) 横向きでカメラを開くと、オーバーレイが表示されません。縦向きで開いても問題ありません。
iOS7をベースSDKとしたアプリで、iOS8にアップグレードした端末でアプリを実行した場合のみ問題が発生します。アプリはストーリーボードを使用しておらず、ペン先を使用しています。
iOS8固有の修正に進み、次のバージョンでベースSDKとして使用する前に、Xcode 5.1.1でこれに対する修正をプッシュしたいと考えています。
カメラを起動するコードは次のとおりです。
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera] == YES) {
// Create Camera
imagePicker = [[UIImagePickerController alloc] init];
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
imagePicker.delegate = self;
imagePicker.showsCameraControls = NO;
// Set up custom controls view
[[NSBundle mainBundle] loadNibNamed:@"OverlayView" owner:self options:nil];
self.overlayView.frame = imagePicker.cameraOverlayView.frame;
imagePicker.cameraOverlayView = self.overlayView;
self.overlayView = nil;
// Show Camera
[self presentViewController:imagePicker animated:NO completion:nil];
[imagePicker release];
}
私も試してみました
そして、OverlayView のツールバー (下部にある) のレイアウト:
それを「一番上」に変更すると、縦向きと横向きの両方で表示されます。したがって、ビュー/ウィンドウ/何かのサイズに関係している必要がありますが、レイアウトが同じままである場合にその動作がどのように変化するかは奇妙です.
showsCameraControls = YES
私は両方とブロックをハッシュして試しましたがOverlayView
、問題#1が続くため、アプリのオーバーレイとは関係ありません。
誰かがこれに対する答えを見つけたことを願っています。これは非常に一般的な問題のようです。
さらに詳細が必要な場合はお知らせください。
編集 1: オーバーレイを修正 (問題 #2)
OverlayView に方向を適用していませんでした。次のように修正しました。
// Grab the window frame and adjust it for orientation - from http://stackoverflow.com/a/15707997/520902
UIView *rootView = [[[UIApplication sharedApplication] keyWindow]
rootViewController].view;
CGRect originalFrame = [[UIScreen mainScreen] bounds];
CGRect screenFrame = [rootView convertRect:originalFrame fromView:nil];
...
self.overlayView.frame = imagePicker.cameraOverlayView.frame;
カメラが向きを認識していないことに関連していると思われ、問題#1の修正を探し続けます.
編集 2: 問題 #1 の更新
カメラの回転は Apple の問題のようです。iOS8 で連絡先アプリを開いて連絡先を編集し、[写真を撮る] を選択すると、まったく同じ問題が発生します - デフォルトの Apple アプリで!
私はまだ修正を見つけることができないので、imagePicker
今のところ各方向の変更を破棄して再作成しているだけです.これは醜いですが、Appleが修正をリリースするか、より良い解決策が現れるまでは十分です.