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

时间:2014-10-23 05:54:42

标签: ios iphone swift

所以我试图启动一个没有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
}

谢谢!

5 个答案:

答案 0 :(得分:8)

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

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

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

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

答案 1 :(得分:2)

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

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

我建议您降级到XCode 6.0.1并重试您的应用。

您可以从此处下载:Apple Downloads

答案 2 :(得分:1)

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

1)如果您不使用故事板 (对此主题的回答!!)

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


2)如果您使用故事板(不是主要答案)

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

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

答案 3 :(得分:0)

确保在项目的常规设置

中启用设备方向 在xcode 6.1中,单击主项目文件夹,常规选项卡

向下滚动至设备方向,启用"人像","向左风景","向右风景"

有关“设备方向设置”的图片,请参阅iOS 8.1 auto rotation

答案 4 :(得分:0)

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

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