第二屏幕显示在iOS 8.3中旋转90度& 8.4

时间:2015-07-01 21:55:42

标签: ios objective-c rotation ios8.3

我的问题不在于如何解决问题,更多的是为什么会发生这种情况:

从iOS 8.3开始,当在第二个屏幕上显示视频时(通过AirPlay或Lightning - > HDMI),屏幕旋转90º。这在以前版本的iOS上或当应用程序以纵向而非横向启动时不是问题。

我通过检查iOS版本和屏幕旋转然后旋转第二个窗口的视图来创建解决方法。如果其他人有这个问题,这是我的解决方案:

if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.3f) {
    CGFloat width = (_externalWindow.frame.size.width > _externalWindow.frame.size.height) ? _externalWindow.frame.size.width : _externalWindow.frame.size.height;
    CGFloat height = (_externalWindow.frame.size.width < _externalWindow.frame.size.height) ? _externalWindow.frame.size.width : _externalWindow.frame.size.height;
    CGRect rotatedFrame = CGRectMake(0.0f, 0.0f, width, height);
    _externalWindow.frame = rotatedFrame;

    if ([UIDevice currentDevice].orientation == UIDeviceOrientationLandscapeLeft && [[UIDevice currentDevice].systemVersion floatValue] < 9.0f) {
        CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI_2 * 3);
        _externalWindow.transform = transform;
    } else if ([UIDevice currentDevice].orientation == UIDeviceOrientationLandscapeRight && [[UIDevice currentDevice].systemVersion floatValue] < 9.0f) {
        CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI_2);
        _externalWindow.transform = transform;
    }
}

编辑:在iOS 9上对此进行了测试,发现了一个类似于上一个问题的有趣问题。方向显示正确,但框架仍然旋转,因此只显示部分内容。我调整了我的解决方案,以确保窗框总是朝向宽屏。

1 个答案:

答案 0 :(得分:0)

您知道,我只能在VC上允许肖像来解决这个问题:

-(NSUInteger)supportedInterfaceOrientations {
  return UIInterfaceOrientationMaskPortrait;
}