0

我第一次转动我的 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 使用 CGAffineTransformMakeScale 缩放到 0

CGAffineTransformInvert:奇异矩阵

我从IOS开始,我不明白这个问题。我想了解问题而不是解决方案,我希望得到一些指导

4

2 回答 2

1

制作旋转动画时,请确保您没有更改 view frame。例如,当使用自动调整大小或尝试frame显式更改时,可能会发生这种情况。

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

于 2013-05-29T11:07:37.860 回答
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)];

    }
}
于 2013-05-29T10:33:14.943 回答