物镜c - 在iOS 8.3和8.4中旋转90度的第二屏幕显示



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

从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上测试了这个问题,发现了一个有趣的问题,与之前的问题类似。方向显示正确,但框架仍在旋转,因此只显示了部分内容。我调整了我的解决方案,以确保窗框始终像宽屏幕一样。

正如你所知,我只允许在VC:上进行人像处理就可以解决这个问题

-(NSUInteger)supportedInterfaceOrientations {
  return UIInterfaceOrientationMaskPortrait;
}

相关内容

  • 没有找到相关文章

最新更新