簡體   English   中英

如何在沒有故事板的情況下以編程方式填充 iPhone X 模擬器的背景

[英]How to fill iPhone X Simulator's background programmatically without Storyboards

所以我創建了一個新的 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)
        ])
    }
}

在此處輸入圖片說明

總結上面的評論,您需要使用啟動故事板,以便 iOS 為您提供覆蓋設備完整邊界的 UIScreen。

如果您還沒有啟動故事板,請通過File > New > File... > Launch Screen在 Xcode 11 中創建一個。 然后確保在您的應用程序目標 > 常規 > 啟動屏幕文件下選擇該啟動故事板。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM