CGAffineTransformMakeRotation(M_PI_2)在控制台中生成错误:CGAffineTransformInvert:奇异矩阵

时间:2013-05-29 10:19:50

标签: ios ios5

我第一次转动iphone时会转动按钮。我第二次转iphone失败了。

- (void)configureViewsLandscapeMode
{
    UIDeviceOrientation deviceOrientation = [UIDevice currentDevice].orientation;

    if (deviceOrientation == UIDeviceOrientationLandscapeLeft) {

        [self.button setTransform:CGAffineTransformMakeRotation(M_PI_2)];

    } else if (deviceOrientation == UIDeviceOrientationLandscapeRight) {


        [self.button setTransform:CGAffineTransformMakeRotation(-M_PI_2)];

    }
}

我读了其他类似的答案:

UIView scale to 0 using CGAffineTransformMakeScale

CGAffineTransformInvert: singular matrix

我从IOS开始,我不明白这个问题。我想了解问题而不是解决问题,我将非常感谢一些指导

2 个答案:

答案 0 :(得分:1)

试试这个:

- (void)configureViewsLandscapeMode
{
    UIDeviceOrientation deviceOrientation = [UIDevice currentDevice].orientation;

    if (deviceOrientation == UIDeviceOrientationLandscapeLeft) {

        [self.button setTransform:CGAffineTransformRotate(CGAffineTransformIdentity, M_PI_2)];

    } else if (deviceOrientation == UIDeviceOrientationLandscapeRight) {


        [self.button setTransform:CGAffineTransformRotate(CGAffineTransformIdentity, -M_PI_2)];

    }
}

答案 1 :(得分:1)

制作旋转动画时,请确保不要更改视图frame。例如,当使用自动调整大小或尝试明确更改frame时,就会发生这种情况。

如果同时更改帧和变换,尤其是在动画内部,iOS会尝试从原始位置生成动画到目标位置。这涉及一些矩阵计算,如果涉及多个更改(例如frame),则可能以错误结束。