iOS8下控件的旋转

由起

使用iOS8 SDK编译后的项目在ipad上运行发现某些控件如HUD弹出后它的位置有了旋转,但是该现象在iOS8的iphone设备上却没有出现。果断认为是iOS8SDK引起的,需要做紧急修复。

修复

代码中迅速找到rotation的相关部分,发现已经是使用[[UIApplication sharedApplication] statusBarOrientation],那应该不会是方向获取错误导致的。那姑且以为是iPad上特有的现象,于是加了设备的判断,测试通过!可惜在iOS7的iPad上还是有问题,正当烦恼之际,突然想起之前的某个issue,果然是同样的问题,最终的解决方案是:

if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_7_1)
    {
        switch (interfaceOrientation) {
            case UIInterfaceOrientationLandscapeLeft:
                self.transform = CGAffineTransformMakeRotation(M_PI * 270.0 / 180.0);
                break;

            case UIInterfaceOrientationLandscapeRight:
                self.transform = CGAffineTransformMakeRotation(M_PI * 90.0 / 180.0);
                break;

            case UIInterfaceOrientationPortraitUpsideDown:
                self.transform = CGAffineTransformMakeRotation(M_PI * 180.0 / 180.0);
                break;

            default:
                break;
        }
    }

问题最终解决,不过这个bug倒是满奇怪的,希望给遇到同样问题的人一个帮助。

Comments