如何在没有Storyboard的情况下以编程方式填写iPhone X Simulator的背景

时间:2017-11-03 12:03:12

标签: ios iphone swift

所以我创建了一个新的iOS单视图应用程序,没有核心数据,没有测试,然后我删除了Main.storyboard和启动屏幕故事板。 我想在代码中做尽可能多的事情,这样我就能理解我在做什么(因为我只是在学习iOS编程)。问题是,我不能用整个iPhone X屏幕填充背景图像。我先用故事板试过这个,没有任何问题。我错过了什么吗?

// AppDelegate.swift

class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?


    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

        window = UIWindow(frame: UIScreen.main.bounds)

        let mainController = MainController()

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

        return true
    }
}


// MainController.swift

import UIKit

class MainController: UIViewController {
    let background: UIImageView = {
        let image = UIImageView(image: #imageLiteral(resourceName: "bg"))
        image.translatesAutoresizingMaskIntoConstraints = false
        return image
    }()
}

extension MainController {
    override func viewDidLoad() {
        super.viewDidLoad()

        setupBackground()
    }
}

extension MainController {
    func setupBackground() {
        view.addSubview(background)

        NSLayoutConstraint.activate([
            background.leadingAnchor.constraint(equalTo: view.leadingAnchor),
            background.trailingAnchor.constraint(equalTo: view.trailingAnchor),
            background.topAnchor.constraint(equalTo: view.topAnchor),
            background.bottomAnchor.constraint(equalTo: view.bottomAnchor)
        ])
    }
}

enter image description here

1 个答案:

答案 0 :(得分:0)

要总结以上评论,您需要使用启动情节提要,以使iOS为您提供覆盖设备全部范围的UIScreen。

如果您还没有启动情节提要板,请通过File> New> File...> Launch Screen在Xcode 11中创建一个。然后确保在应用程序目标>常规>启动屏幕文件下选择该启动故事板。