相机叠加视图不会改变iPhone 4中的横向(左和右)?

时间:2011-12-07 04:32:38

标签: iphone orientation landscape camera-overlay

我已通过叠加视图使用自定义按钮(UIButton)自定义相机。我的iPhone应用程序仅在横向模式(左和右)中运行。现在,我的相机叠加视图在iPhone 3GS中完全左右改变了方向,但在iPhone4中无法清晰显示。在ios5中如果我在landscapemode(右/左)中启动具有叠加视图的相机,它会完美地启动,但是,如果我将方向更改为(右 - >左/左 - >右),叠加视图不会完美地改变帧大小在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)中效果不佳。有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

谢谢你的朋友们。我自己解决了这个问题。我只是设置了UIView的界限,所以它覆盖了Camera OverlayView的完整视图,我也尝试了上面的代码,我在我的问题中提到过。

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

所以我在Camera启动时检查了这段代码,

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 Notification中检查了这个条件。现在,我的应用程序工作魅力。感谢。