0

オーバーレイビューでカスタムボタン(UIButton)を使用してカメラをカスタマイズしました。私のiPhoneアプリケーションはランドスケープモード(左と右)でのみ実行されます。今、私のカメラオーバーレイビューは、iPhone 3GSでは左右の向きを完全に変更しますが、iPhone4では明確に実行されません。iOS5では、ランドスケープモード(右/左)でオーバーレイビューを使用してカメラを起動すると完全に起動しますが、向きを(右->左/左->右)に変更すると、オーバーレイビューのフレームサイズが完全に変更されませんUIView(CameraOverlayView)、UIButtonのフレームサイズが変更されています。どうすれば修正できますか?この問題を解決するのを手伝ってください。私の友達が私の問題を解決してくれることを願っています。前もって感謝します。ここに、使用したコードを添付しました。

  UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];

if(orientation == UIDeviceOrientationLandscapeLeft)
{
    CGAffineTransform transform = self.view.transform;
    transform = CGAffineTransformRotate(transform, (M_PI / 2.0));
    imgpicker.cameraOverlayView.transform = transform;
    NSLog(@"Orientation Landscape Left");
} 
else if(orientation == UIDeviceOrientationLandscapeRight)
{
    imgpicker.cameraOverlayView.transform = CGAffineTransformRotate(CGAffineTransformIdentity, 117.81);
    NSLog(@"Orientation Landscape Right");
}

このコードはiPhone#GS(ios4)では正常に機能しますが、iPhone4(ios5)では正常に機能しません。誰かが私がこの問題を解決するのを手伝ってくれますか?

4

1 に答える 1

2

友達ありがとう。私はこの問題を自分で解決しました。境界をUIViewに設定して、Camera OverlayViewの全景をカバーするようにしました。また、質問で述べた上記のコードを試しました。

     cameraview.bounds = CGRectMake(0.0, 0.0, 480.0f, 320.0f); 

そして、私はカメラの起動の開始時にこのコードをチェックしました、

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;
    } 

この後、UIDeviceOrientation通知でもこの状態を確認しました。今、私のアプリの動作の魅力。ありがとう。

于 2012-01-19T06:19:37.613 に答える