手动创建的UIWindow是错误的大小

时间:2016-08-07 19:26:07

标签: ios swift uikit uiwindow uiscreen

我正在学习如何在没有Interface Builder的情况下创建iOS应用程序(即故事板,xib等)。下面是我正在使用的基本应用程序委托类。问题是,当显示时UIWindow没有用完设备的全屏(参见附件截图)。这发生在我测试的所有设备和模拟器上。为什么不使用全屏?

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
  lazy var window: UIWindow? = {
    debugPrint("AppDelegate: Creating Window")

    let screen: UIScreen = UIScreen.mainScreen()
    let window: UIWindow = UIWindow.init(frame: screen.bounds)

    window.backgroundColor = UIColor.whiteColor()

    return window
  }()

  lazy var rootViewController: ShapesViewController = {
    debugPrint("AppDelegate: Creating Root View Controller")

    let rootViewController = ShapesViewController.init(nibName: nil, bundle: nil)

    return rootViewController
  }()

  func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool {
    debugPrint("AppDelegate: applicationWillEnterForeground")

    window?.rootViewController = rootViewController
    window?.makeKeyAndVisible()

    return true
  }
}

Why doesn't the window use the whole screen?

3 个答案:

答案 0 :(得分:8)

问题原因是我没有发布图片或故事板。出于某种原因没有这个,应用程序默认为3.5"尺寸。感谢此评论:A launch storyboard or xib must be provided unless the app requires full screen

答案 1 :(得分:1)

这对我来说总是有用的(虽然我没有看到任何明显的区别)。你介意分享你的ShapesViewController代码吗?

var window: UIWindow?

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    window = UIWindow(frame: UIScreen.mainScreen().bounds)
    window?.rootViewController = ViewController()
    window?.makeKeyAndVisible()
    return true
}

答案 2 :(得分:0)

我知道听起来很傻但是...... 对于一个新的项目,macinjosh说的是有效的。 对于我在Xcode 8和swift 3中的项目,它没有(可能是因为我删除了启动屏幕并且不得不再次创建)。 刚创建新项目,并遵循macinjosh所说的。然后重新迁移所有文件。