CGAffineTransformMakeRotation在viewWillTransitionToSize中旋转UISlider

时间:2015-10-17 08:02:46

标签: ios rotation cgaffinetransform viewwilltransitiontosize

我想在iPhone横向布局中旋转我的UISlider并使用此代码来实现它。

self.customSlider.transform = CGAffineTransformMakeRotation(M_PI/2);

但是,我想在-(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator中使用它,以便它根据大小类进行适当的旋转。

我有以下代码,其中我放了其他旋转代码

- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id)coordinator {

[super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];

if ([UIDevice currentDevice].orientation == UIDeviceOrientationLandscapeLeft) {
    self.stillCamera.outputImageOrientation = UIInterfaceOrientationLandscapeRight;

}

if ([UIDevice currentDevice].orientation == UIDeviceOrientationLandscapeRight) {
    self.stillCamera.outputImageOrientation = UIInterfaceOrientationLandscapeLeft;

}

if ([UIDevice currentDevice].orientation == UIDeviceOrientationPortrait) {
    self.stillCamera.outputImageOrientation = UIDeviceOrientationPortrait;
}

}

我想确保UISlider在每个方向上都处于正确的方向,滑块的左边缘在横向顶部,右边在底部。我需要检查旋转以确保滑块处于正确的位置,无论用户如何从左到右从纵向旋转到横向。我怎么能这样做?

编辑: 我正在使用GPUImage,预览视图对该视图使用左/右方向,所以我需要找到一个允许我保留它的实现,同时还允许一般的大小类自定义。

1 个答案:

答案 0 :(得分:0)

我想通了

首先 - 将UISlider放在容器视图中,并根据需要固定该容器视图。

将UISlider以纵向方式固定到容器视图中 - 水平/垂直居中,高度/宽度与容器相同。

在横向中,根据需要使用UISlider居中的H / V固定容器视图,宽度与容器的宽度相等。

-(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {


    [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];

    if ([UIDevice currentDevice].orientation == UIDeviceOrientationLandscapeLeft) {
        self.stillCamera.outputImageOrientation = UIInterfaceOrientationLandscapeRight;
         self.customSlider.transform = CGAffineTransformMakeRotation(M_PI/2);

    }

    if ([UIDevice currentDevice].orientation == UIDeviceOrientationLandscapeRight) {
        self.stillCamera.outputImageOrientation = UIInterfaceOrientationLandscapeLeft;
         self.customSlider.transform = CGAffineTransformMakeRotation(M_PI/2);

    }

    if ([UIDevice currentDevice].orientation == UIDeviceOrientationPortrait) {
        self.stillCamera.outputImageOrientation = UIDeviceOrientationPortrait;
        self.customSlider.transform = CGAffineTransformIdentity;
    }

}