繁体   English   中英

iOS 8:没有故事板,自动旋转无法运行

[英]iOS 8: Autorotation is not working without storyboard

所以我试图启动一个没有Storyboard的项目,我似乎无法弄清楚为什么UIWindow没有将自动旋转命令传递给根视图控制器。 通过故事板,自动旋转起作用。 如果我以编程方式创建窗口,则自动旋转不起作用。

screenshot

这是我在App Delegate中实例化窗口的方法:

window = UIWindow(frame: UIScreen.mainScreen().bounds)
if let window = window {
    window.backgroundColor = UIColor.whiteColor()
    window.makeKeyAndVisible()

    let nc: SignInViewController = UIStoryboard(name: "Main", bundle: nil)
            .instantiateViewControllerWithIdentifier("SignInViewController") as SignInViewController
    window.rootViewController = nc
}

谢谢!

你在使用故事板吗? 如果是这样,您的应用程序中可能有旧代码didFinishLaunchingWithOptions方法。

尝试删除以下代码行以及与UIWindow相关的任何其他代码:

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

只需要从AppDelegate.m文件中删除上面的行。

我认为您的代码是正确的,并且您正在看到XCode 6.1中的一个(很多)错误。

我使用你的代码尝试了一个非常简单的6.1应用程序,我可以试验这个bug。 然后我降级到6.0.1并且我的应用程序的自动旋转是完美的。

我建议你降级到XCode 6.0.1并重试你的应用程序。

您可以从此处下载Apple下载

标记的答案是降级到XCode 6.0.1 - 我不推荐它。

1)如果您不使用故事板 (本主题的答案!!)

转到 - >项目名称 - >目标 - >项目名称 - >部署信息 - > 主界面 - >将其清空


2)万一你使用故事板 (不是主要答案)

你的AppDelegate应该看起来像......

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool 
{
    return true
}

确保在项目的常规设置中启用设备方向

在xcode 6.1中,单击主项目文件夹,常规选项卡

向下滚动到设备方向,启用“纵向”,“向左横向”,“横向右侧”

有关“设备方向”设置的图片,请参阅iOS 8.1自动旋转

我刚刚解决了我项目中的问题。 对我来说,解决方案是从以下代码中删除动画:
[self presentViewController: root animated: animated completion:^{ [AppDelegate singleton].window.rootViewController = root; }]; 现在只是[AppDelegate singleton].window.rootViewController = root;

我不知道这是否能回答你的问题,但它解决了我认为是共同问题的实例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM