复制相机应用旋转到横向IOS 6 iPhone(Replicate camera app rotat

2019-08-20 09:03发布

嗨,我试图复制可在相机应用取向时转移到景观中看到相同的旋转。 不幸的是我有没有运气。 我需要设置了与的UIImagePickerController定制cameraOverlayView。

从这个画像(B是UIButtons)

|-----------|
|           |
|           |
|           |
|           |
|           |    
|           |
| B   B   B |
|-----------|

这个景观

|----------------|
|              B |
|                |
|              B |
|                |
|              B |
|----------------|

换句话说,我想的按钮固守原有画像底部和旋转他们的中心。 我用故事板和自动布局已启用。 任何帮助是极大的赞赏。

Answer 1:

好了,我已经成功地排序了这一点。 在这里要注意的是UIImagePickerController类支持肖像模式只能按照苹果公司的文档 。

为了捕捉旋转willRotateToInterfaceOrientation没用在这里,所以你必须使用notificatons。 在运行时也设置自动布局约束上是不是要走的路。

在AppDelegate中didFinishLaunchingWithOptions需要启用旋转通知:

// send notification on rotation
[[UIDevice currentDevice]beginGeneratingDeviceOrientationNotifications];

viewDidLoad的cameraOverlayView的方法UIViewController添加以下内容:

//add observer for the rotation notification
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(orientationChanged:) name:UIDeviceOrientationDidChangeNotification object:nil]; 

最后补充orientationChanged:方法将cameraOverlay UIViewController

- (void)orientationChanged:(NSNotification *)notification
{
    UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
    double rotation = 0;

    switch (orientation) {
        case UIDeviceOrientationPortrait:
            rotation = 0;
            break;
        case UIDeviceOrientationPortraitUpsideDown:
            rotation = M_PI;
            break;
        case UIDeviceOrientationLandscapeLeft:
            rotation = M_PI_2;
            break;
        case UIDeviceOrientationLandscapeRight:
            rotation = -M_PI_2;
            break;
        case UIDeviceOrientationFaceDown:
        case UIDeviceOrientationFaceUp:
        case UIDeviceOrientationUnknown:
        default:
            return;
    }
    CGAffineTransform transform = CGAffineTransformMakeRotation(rotation);
    [UIView animateWithDuration:0.4 delay:0.0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{
        self.btnCancel.transform = transform;
        self.btnSnap.transform = transform;     
    }completion:nil];
}

上面的代码适用于2个UIButtons我使用在这种情况下btnCancel和btnSnap旋转变换。 旋转设备时,这给你的相机应用效果。 我仍然在控制台得到一个警告<Error>: CGAffineTransformInvert: singular matrix. 不知道为什么会这样,但它是值得做的摄像机视图。

希望以上帮助。



文章来源: Replicate camera app rotation to landscape IOS 6 iPhone