2011-12-02 12 views
8

私のiPhoneアプリケーションには写真を撮るためのUIImagePickerControllerがあります。すべてのデフォルトのカメラコントロールを隠して、UIImagePickerControllerのCameraOverLayViewとして2つのボタンを追加したUIViewを追加しました。私のアプリケーションは常にランドスケープモードでのみ実行されます。また、カメラは風景モードのみを起動します。今度は、CameraOverlayViewは、Landscape Left側のみがLandscape to Rightに変更されません。デバイスの向きが変わると、どのようにCameraOverlayView LandscapeModeを左右に変更できますか?それを修正するのを助けてください。私のアプリでは大きな問題です。このコードは、左カメラを変更する方法オーバーレイビューの向きを左右に変えるiPhone?

imgpicker.cameraOverlayView.transform = CGAffineTransformRotate(CGAffineTransformIdentity, 117.81); 

と、このコードは、ランドスケープモードでcameraoverlayview右 GAffineTransformは= self.view.transform変換開催風景モードでOverlayviewを保持します。

transform = CGAffineTransformRotate(transform, (M_PI/2.0)); 

    imgpicker.cameraOverlayView.transform = transform; 

私はこれらが私を助けていない、

UIInterfaceOrientation orientation= [[UIApplication sharedApplication] statusBarOrientation]; 
    if (orientation == UIInterfaceOrientationLandscapeLeft) 
    { 
     imgpicker.cameraOverlayView.transform = CGAffineTransformRotate(CGAffineTransformIdentity, 117.81); 
    } 
    else if (orientation == UIInterfaceOrientationLandscapeRight) 
    { 
     CGAffineTransform transform = self.view.transform; 
      transform = CGAffineTransformRotate(transform, (M_PI/2.0)); 
     imgpicker.cameraOverlayView.transform = transform; 
    } 

、このようなUIInterfaceOrientation方法でこれらのコードを使用ししかし。デバイスの向きを左右に回転させると、カメラオーバーレイビューは変化しません。私の問題を解決してもらえますか?ありがとう。

+0

これは誰でも解決済みですか? –

+0

おかげさまで解決になりました! –

+0

@JayQ:これはまだ解決していますか? –

答えて

16

ありがとうございます。自分でカメラオーバーレイビューの向きの問題を解決しました。私は私の質問で言及された同じコードを使用しました。オリエンテーションの変更についてUIDeviceOrientation通知を追加しました。下記のコードをご覧ください。

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:@"UIDeviceOrientationDidChangeNotification" object:nil]; 


- (void) orientationChanged:(NSNotification *)notification 
{ 
    UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation]; 
if(orientation == UIDeviceOrientationLandscapeLeft) 
     {     
      CGAffineTransform transform = self.view.transform; 
      transform = CGAffineTransformRotate(transform, (M_PI/2.0)); 
      imgpicker.cameraOverlayView.transform = transform; 
     } 
     else if(orientation == UIDeviceOrientationLandscapeRight) 
     { 
      imgpicker.cameraOverlayView.transform = CGAffineTransformRotate(CGAffineTransformIdentity,117.81); 
     } 
} 

このコードを追加しました。ユーザーがデバイスの向きを変更すると、このメソッドはカメラのオーバーレイビューの向きを呼び出して変更します。このメソッド内の状況を確認してください。そうでない場合は、アプリがクラッシュする可能性があります。ありがとう。

+1

私はこれを使用していて、オーバーレイは正しく整列しません。それはいつもあまりにも左または右です。 – zakdances

+0

@yuvaraj:こんにちは... iphone 4を使用しており、向きの正確な回転コードを教えてくれます。私はそれを回転することができますが、ボタンは、左または右に遠くに整列します。 –

+1

@yourfriendzak:これについての解決策を見つけましたか?もしそうなら、私を助けることができますか? –

関連する問題