为了账号安全,请及时绑定邮箱和手机立即绑定

支持的方向与应用程序没有通用的方向,并且应该Autorotate返回YES'

支持的方向与应用程序没有通用的方向,并且应该Autorotate返回YES'

iOS
30秒到达战场 2019-10-17 14:18:24
我的应用程序(iPad; iOS 6)是仅横向应用程序,但是当我尝试使用UIPopoverController显示照片库时,会引发此错误: Supported orientations has no common orientation with the application, and shouldAutorotate is returning YES.我尝试过更改很多代码,但是没有运气。
查看完整描述

3 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

在IOS6中,您在三个地方都支持界面方向:


.plist(或“目标摘要”屏幕)

您的UIApplicationDelegate

正在显示的UIViewController

如果遇到此错误,则很可能是因为您在UIPopover中加载的视图仅支持纵向模式。这可能是由Game Center,iAd或您自己的视图引起的。


如果是您自己的视图,则可以通过重写UIViewController上的supportedInterfaceOrientations来修复它:


- (NSUInteger) supportedInterfaceOrientations

{

     //Because your app is only landscape, your view controller for the view in your

     // popover needs to support only landscape

     return UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight;

}

如果不是您自己的视图(例如iPhone上的GameCenter),则需要确保.plist支持纵向模式。您还需要确保UIApplicationDelegate支持以纵向模式显示的视图。您可以通过编辑.plist,然后在UIApplicationDelegate上覆盖supportedInterfaceOrientation来做到这一点:


- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window

{

    return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight;

}


查看完整回答
反对 回复 2019-10-17
?
翻阅古今

TA贡献1780条经验 获得超5个赞

在另一种情况下,可能会出现此错误消息。我花了好几个小时才找到问题。阅读几次后,此线程非常有帮助。


如果将主视图控制器旋转为横向,并且您调用一个应以纵向显示的自定义子视图控制器,则在代码如下所示时可能会发生此错误消息:


- (NSUInteger)supportedInterfaceOrientations {


    return UIInterfaceOrientationPortrait;

}

这里的陷阱是xcode的intellisense建议“ UIInterfaceOrientationPortrait”,我对此并不在意。乍一看,这似乎是正确的。


右边的面具叫


UIInterfaceOrientationMaskPortrait

请注意小前缀“ Mask”,否则您的子视图将最终出现异常和上面提到的错误消息。


新的枚举进行了位移。旧的枚举返回无效值!


(在UIApplication.h中,您可以看到新的声明:UIInterfaceOrientationMaskPortrait =(1 << UIInterfaceOrientationPortrait))


解决方案是:


- (BOOL)shouldAutorotate {


    return YES;

}


- (NSUInteger)supportedInterfaceOrientations {


    // ATTENTION! Only return orientation MASK values

    // return UIInterfaceOrientationPortrait;


    return UIInterfaceOrientationMaskPortrait;

快速使用


override func shouldAutorotate() -> Bool {


    return true

}


override func supportedInterfaceOrientations() -> Int {


    return Int(UIInterfaceOrientationMask.Portrait.rawValue)

}


查看完整回答
反对 回复 2019-10-17
  • 3 回答
  • 0 关注
  • 1841 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信