大佬教程收集整理的这篇文章主要介绍了ios – 从风景iPad推出时,UIViewController在AirPlay屏幕上横向显示,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
此处的目标是使用自定义视图控制器替换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.如果/当我收到回复时,我会更新此信息.
外部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,请注明来意。