[Swift] 코드만으로 초기 화면을 생성해 보았습니다.

11648 단어 XcodeSwift

소개



이번에는 스토리 보드를 사용하지 않고 코드만으로 초기 화면까지 작성해 보겠습니다.

실천



앱을 시작하려면 AppDelegate.swift를 사용해야 합니다.
그러나 iOS 13.0 이상에서는 SceneDelegate.swift를 사용해야 하는 것 같습니다. (주의: 사용하지 않는 방법도 있는 것 같습니다.)
이번에는 알기 쉬웠던 AppDelegate.swift 와 SceneDelegate.swift 를 사용한 방법을 소개하고 싶습니다.

AppDelegate.swift


  • 1. UIWindow 의 초기화를 실시하고 있습니다.
  • 2. 먼저 표시할 ViewController를 설정합니다. (예 : 000 ViewController)

  • AppDelegate.swift
    
    class AppDelegate: UIResponder, UIApplicationDelegate {
    
        var window: UIWindow?
    
        func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
            // Override point for customization after application launch.
    
            // 1. 初期化
            window = UIWindow(frame: UIScreen.main.bounds)
            window?.makeKeyAndVisible()
    
            // 2. 最初に表示する画面を設定
            let rootViewController = RootViewController()
            window?.rootViewController = rootViewController
    
            return true
        }
    }
    

    SceneDelegate.swift


  • 1. UIWindow 의 초기화를 실시하고 있습니다.
  • 2. 먼저 표시할 ViewController를 설정합니다. (예 : 000 ViewController)

  • SceneDelegate.swift
    class SceneDelegate: UIResponder, UIWindowSceneDelegate {
    
        var window: UIWindow?
    
        func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
            // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
            // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
            // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
            guard let _ = (scene as? UIWindowScene) else { return }
    
            if let windowScene = scene as? UIWindowScene {
                // 1. 初期化
                let window = UIWindow(windowScene: windowScene)
                window.makeKeyAndVisible()
    
                // 2. 最初に表示する画面を設定
                let rootViewController = RootViewController()
                window.rootViewController = rootViewController
    
                self.window = window
            }
        }
    }
    

    RootViewController.swift


  • 다음으로 앱이 시작될 때 표시할 화면을 만듭니다.
  • 표시하고 싶은 화면인지 확인하기 위해 라벨을 추가합니다.

  • RootViewController.swift
    
    class RootViewController: UIViewController {
    
        // 表示するタイトル
        private let titleLabel: UILabel = {
            let label = UILabel()
            label.translatesAutoresizingMaskIntoConstraints = false
            label.text = "RootViewController"
            label.textColor = .label
            label.textAlignment = .center
            label.font = UIFont.systemFont(ofSize: 24, weight: .bold)
            return label
        }()
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            // 背景色を設定
            self.view.backgroundColor = .systemBackground
    
            // UIの設定
            self.setupUI()
        }
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
        }
    
        private func setupUI() {
            // titleLabel を view に追加
            self.view.addSubview(titleLabel)
    
            // titleLabel の制約を設定
            NSLayoutConstraint.activate([
                self.titleLabel.centerXAnchor.constraint(equalTo: self.view.centerXAnchor),
                self.titleLabel.centerYAnchor.constraint(equalTo: self.view.centerYAnchor)
            ])
        }
    }
    
    

    결과



    연습에서는 AppDelegate.swift 및 SceneDelegate.swift에 코드를 작성했습니다.
    앱을 실행해 보면 다음과 같이 될 것입니다.



    마지막으로



    무사히 코드만으로 만들 수 있었습니다.
    AppDelegate.swift 및 SceneDelegate.swift를 사용하여 코드만으로 앱 시작을 구현할 수 있었습니다.
    iOS 13.0 이상에서도 SceneDelegate.swift를 사용하지 않는 방법도 있는 것 같습니다만, 또 다른 기회로 하고 싶습니다.

    여기까지 봐 주셔서 감사합니다, 여러분의 배움의 도움이 되면 다행입니다.

    참고문헌


  • Managing Your App's Life
  • UIApplicationDelegate
  • UISceneDelegate
  • 좋은 웹페이지 즐겨찾기