我的问题不在于如何解决问题,更多的是为什么会发生这种情况:
从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上对此进行了测试,发现了一个类似于上一个问题的有趣问题。方向显示正确,但框架仍然旋转,因此只显示部分内容。我调整了我的解决方案,以确保窗框总是朝向宽屏。
答案 0 :(得分:0)
您知道,我只能在VC上允许肖像来解决这个问题:
-(NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}