手动创建的 UIWindow 大小错误
Posted
技术标签:
【中文标题】手动创建的 UIWindow 大小错误【英文标题】:Manually Created UIWindow is Wrong Size 【发布时间】:2016-12-13 13:13:25 【问题描述】:我正在学习如何在没有 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
【问题讨论】:
【参考方案1】:问题原来是我没有启动图像或故事板。出于某种原因,如果没有这个,应用程序默认为 3.5" 大小。感谢此评论:A launch storyboard or xib must be provided unless the app requires full screen
【讨论】:
引用 Matt Neuberg 的书 "iOS 9 Programming Fundamentals with Swift"(了不起的技术作家!):在您的 Info.plist 中存在Launch screen interface file base name
键告诉系统您的应用程序在较新的设备类型上原生运行,例如 iPhone 6 和 iPhone 6 Plus。没有它,您的应用将被放大显示……您将无法获得您有权获得的所有像素……【参考方案2】:
这总是对我有用(虽然我没有看到任何明显的区别)。你介意分享你的 ShapesViewController 代码吗?
更新到 swift 4.2
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
window = UIWindow(frame: UIScreen.main.bounds)
window?.rootViewController = ViewController()
window?.makeKeyAndVisible()
return true
【讨论】:
ShapesViewController 为空。我什至将根视图控制器更改为一个普通的旧 UIViewController 对象,我得到了同样的东西。我尝试了您的示例代码只是为了排除任何奇怪之处,它看起来一样。 @macinjosh 也许你应该在一个新的纯项目中试用示例代码。您还删除了 main.storyboard 文件吗?【参考方案3】:我知道听起来很傻,但是... 对于一个新项目,macinjosh 所说的工作。 对于我在 Xcode 8 和 swift 3 中的项目,它没有(可能是因为我删除了启动屏幕并不得不重新创建)。 刚刚创建了新项目,并按照 macinjosh 所说的进行操作。然后将所有文件迁移回来。
【讨论】:
以上是关于手动创建的 UIWindow 大小错误的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript中易犯的小错误-------常见错误七:原型继承问题
JavaScript中易犯的小错误-------常见错误四:比较运算符