2011-06-21 9 views
1

写真を撮ることができるiPad2のアプリを開発しています。画像ピッカーのカスタムオーバーレイを使用します。しかし、このオーバーレイビューはデバイスの向きを検出しません。iPadカメラオーバーレイオリエンテーションの問題

私は didRotateFromInterfaceOrientationwillAnimateRotationToInterfaceOrientationで試しました。しかし彼らのうちの何人かは働いていません。これがオーバーレイを作成する方法です。

@interface CameraOverlayController : UIViewController <UINavigationControllerDelegate, UIImagePickerControllerDelegate> 


-(void)setupImagePicker:(UIImagePickerControllerSourceType)sourceType 
{ 
    self.picker.sourceType = sourceType; 

    if (sourceType == UIImagePickerControllerSourceTypeCamera) 
    {   
     self.picker.showsCameraControls = NO;   

     if ([[self.picker.cameraOverlayView subviews] count] == 0) 
     { 
      CGRect overlayViewFrame = self.picker.cameraOverlayView.frame; 

      if (UIDeviceOrientationIsLandscape(self.interfaceOrientation)) { 
       NSLog(@"Initially Landscape and height : %f" , CGRectGetHeight(overlayViewFrame)); 
      } 
      if (UIDeviceOrientationIsPortrait(self.interfaceOrientation)) { 
       NSLog(@"Initially Portrait and height : %f", CGRectGetHeight(overlayViewFrame)); 
      } 
      self.view.backgroundColor = [UIColor clearColor]; 

      CGRect newFrame = CGRectMake(0.0, CGRectGetHeight(overlayViewFrame) - self.view.frame.size.height - 10.0, CGRectGetWidth(overlayViewFrame), self.view.frame.size.height + 10.0); 

      self.view.frame = newFrame; 
      [self.picker.cameraOverlayView addSubview:self.view]; 
     } 
    } 
} 

どのようにカメラのオーバーレイ内のデバイスの回転を検出できますか教えてください。

多くのお礼ありがとうございます

答えて

-1

私は上記の問題を自分で解決しています。 上記のような機能が再現されました。

次に、ナビゲーションコントローラの代理人を使用しています。この機能の中で私はデバイスの方向を捕らえて、私の問題を解決することができました。

-(void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated 

ありがとうございます。

+0

こんにちは、これについて詳しく説明できますか? willShowViewControllerの実装方法を教えてください。 thanks –

+1

このwillShowViewControllerはナビゲーションコントローラの代理人です。このメソッド内ですべてのUI(navigationControllerツールバー、ボタンなど)を実装し、サブビューとしてviewControllerに追加します。これがあなたに役立つことを願っています。 – Chinthaka

+0

@Chinthaka:こんにちは...カスタムカメラを作成し、ポートレートモードでライブ画面が正常に読み込まれます。しかし、私はそれをランドスケープモードに変更すると、コンソール "CGAffineTransformInvert:singular matrix"でこのエラーが発生します。私はライブスクリーンの向きの変更に自動サイズ調整マスクを使用しようとしましたが、それは助けにはなりません。 –