我第一次转动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开始,我不明白这个问题。我想了解问题而不是解决问题,我将非常感谢一些指导
答案 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
),则可能以错误结束。