iOS   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 从风景iPad推出时,UIViewController在AirPlay屏幕上横向显示大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用AirPlay在外部显示器上显示全屏,16:9,UIViewController.

此处的目标是使用自定义视图控制器替换AirPlay镜像,该控制器将跨越外部屏幕的整个大小.

当iPad处于纵向模式时,屏幕连接时,一切似乎都很好.当它在横向连接时,UIViewController在外部显示器上侧向显示,只填充屏幕的一半.

为此,我将我的UIViewController添加到附加的AirPlay UIScreen中.

-(void) screenConnected:(Nsnotification * ) notification {

    UIScreen * screen = [notification object]; //this should be the airplay display
    UIWindow * window = [[UIWindow alloc] initWithFrame:screen.bounds];
    [currentWindow setScreen:screen];
    UIViewController * controller = [_delegate createControllerForAirplayDisplay:window];
    [window setHidden:NO];
    [window setRootViewController:controller];

}

这似乎工作正常,我看到iPad和AirPlay电视全屏显示.

我在哪里看到的问题是当iPad处于横向模式时连接AirPlay显示器.当发生这种情况时,AirPlay显示器会向侧面呈现UIViewController,并且看起来像肖像模式.

屏幕连接为纵向:

屏幕连接在横向,内容是侧面的,只在一半的显示器上呈现:

我尝试使用CGAffineTransformMakeRotation旋转UIWindow和UIViewController,这确实修复了方向,但视图没有在AirPlay显示内部居中.

编辑

提起与此相关的Apple问题,rdar:// 20817189.如果/当我收到回复时,我会更新此信息.

解决方法

我在文档中找到了这个:
https://developer.apple.com/library/ios/documentation/WindowsViews/Conceptual/WindowAndScreenGuide/UsingExternalDisplay/UsingExternalDisplay.html

外部UIWindow从当前设备获取方向,在这种情况下是横向方向.
因此,当您设置rootViewController的框架时,例如(0,1270,840),原点位于电视的右上角.

您必须以纵向方式强制UIWindow.
我在AppDelegate上使用此代码解决了这个问题:

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)_window {
if ([UIScreen mainScreen] == _window.screen || !_window) {
    return UIInterfaceOrientationMaskAll;
}else {
    return UIInterfaceOrientationPorTrait;
}
}

大佬总结

以上是大佬教程为你收集整理的ios – 从风景iPad推出时,UIViewController在AirPlay屏幕上横向显示全部内容,希望文章能够帮你解决ios – 从风景iPad推出时,UIViewController在AirPlay屏幕上横向显示所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。