Iphone 应用程序在横向和纵向模式下都可以正常工作,但在 ipad 中它只能在一种模式下工作?
Posted
技术标签:
【中文标题】Iphone 应用程序在横向和纵向模式下都可以正常工作,但在 ipad 中它只能在一种模式下工作?【英文标题】:Iphone app is working fine in both landscape and portrait mode but in ipad it only works in one mode? 【发布时间】:2013-10-31 13:55:43 【问题描述】:我使用自动旋转方法制作了一个 ios 应用程序,该应用程序在 iPhone 的横向或纵向两种模式下都可以正常工作,我使用了以下代码
if (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight)
self.view=Landscape;
self.view.transform=CGAffineTransformMakeRotation(deg2rad* (90));
self.view.bounds=CGRectMake(0.0,0.0,480.0,320.0);
else if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft)
self.view=Landscape;
self.view.transform=CGAffineTransformMakeRotation(deg2rad* (-90));
self.view.bounds=CGRectMake(0.0,0.0,480.0,320.0);
else if (toInterfaceOrientation == UIInterfaceOrientationPortrait)
self.view=Portrait;
self.view.transform=CGAffineTransformMakeRotation(deg2rad* (0));
self.view.bounds=CGRectMake(0.0,0.0,320.0,480.0);
else
self.view=Portrait;
self.view.transform=CGAffineTransformMakeRotation(deg2rad* (180));
self.view.bounds=CGRectMake(0.0,0.0,320.0,480.0);
但对于 iPad,它只能在一种模式下工作,无论是横向还是纵向,当我旋转设备时,它会显示空白的白色屏幕,但如果我不旋转它,它工作得很好。 请指导我,因为我是 iOS 新手。
【问题讨论】:
【参考方案1】:要检查的地方是应用程序目标、常规选项卡、部署信息部分。
就在部署目标和设备选择器下方,您可以在 iPhone 和 iPad 之间切换,然后使用复选框启用支持的方向。
如果您已经为 iPad 和 iPhone 正确设置了这些设置,那么您可能想看看您是如何处理 UIViewControllers 的 supportedInterfaceOrientations
或 preferredInterfaceOrientationForPresentation
方法的
【讨论】:
如果所有东西都配置为允许在这些地方使用您想要的方向,那么您将不得不深入研究如何自己处理旋转,尤其是使用 willRotateToInterfaceOrientation:duration: 和 didRotateFromInterfaceOrientation: UIViewController 的方法 是的,我选择了通用,但它在 iPad 中无法正常工作。在 iphone 中,它在两种模式下都可以正常工作,但在 iPad 中,当我旋转 iPad 时,它只能在一种模式下工作,屏幕变成空白 太棒了!所以现在我们知道您正确支持所有方向,并且当您旋转时会发生某些事情,而不是您想要的事情。那么让我们来看看如何实现轮换。您是在 nib 中、在代码中还是在两者中配置视图层次结构?你使用自动布局吗?请在代码中发布任何设置的代码,然后为 willRotateToInterfaceOrientation:duration: 和 didRotateFromInterfaceOrientation: 发布代码 -(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation return (interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown || interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight); 我已经在代码中发布的上述代码是-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration以上是关于Iphone 应用程序在横向和纵向模式下都可以正常工作,但在 ipad 中它只能在一种模式下工作?的主要内容,如果未能解决你的问题,请参考以下文章