[Tuist] Version 4 / UIKit / AppDelegate / SceneDelegate

2024. 3. 28. 21:42🍏/Xcode

 

Tuist init UIKit without Storyboard with version 4 

tuist init --platform ios 

 


 

tuist init --platform ios

4.8.0 버전에서는 default가 SwiftUI로 되어있으므로, 이를 UIKit으로 진행하기 위해 아래와 같은 프로세스를 따릅니다.

Tuist init 이후

AppDelegate로 진행하는 경우 UIKit without Storyboard로 전환하는 방법은 간단합니다.
그냥 소스를 지워주시고 아래와 같이 앱델리게이트를 채택해 만들어 주시기만 하면 됩니다. 

AppDelegate.swift

import UIKit

@main
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil
    ) -> Bool {
        window = UIWindow(frame: UIScreen.main.bounds)
        let viewController = UIViewController()
        viewController.view.backgroundColor = .orange
        window?.rootViewController = viewController
        window?.makeKeyAndVisible()

        return true
    }

}

위와 같이 간단하게 진행가능 합니다.

 

SceneDelegate에서 진행하는 경우에는 Tuist edit을 통해 infoPlist를 수정해주어야합니다. UIApplicationSceneManifest 에 해당 키값들을 추가해줍니다.

infoPlist: .extendingDefault(
    with: [
        "UILaunchStoryboardName": "LaunchScreen.storyboard",
        "UIApplicationSceneManifest": [
            "UIApplicationSupportsMultipleScenes": false,
            "UISceneConfigurations": [
                "UIWindowSceneSessionRoleApplication": [
                    [
                        "UISceneConfigurationName": "Default Configuration",
                        "UISceneDelegateClassName": "$(PRODUCT_MODULE_NAME).SceneDelegate"
                    ],
                ]
            ]
        ],
    ]
),

SceneDelegate.swift

import UIKit

class SceneDelegate: UIResponder, UIWindowSceneDelegate {
    
    var window: UIWindow?
    
    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        guard let windowScene = (scene as? UIWindowScene) else { return }
        window = UIWindow(frame: windowScene.coordinateSpace.bounds)
        window?.windowScene = windowScene

        let viewController = UIViewController()
        viewController.view.backgroundColor = .orange
        
        window?.rootViewController = viewController
        window?.makeKeyAndVisible()
    }
}

AppDelegate.swift

import UIKit

@main
class AppDelegate: UIResponder, UIApplicationDelegate {
}

 


 

tuist generate

tuist generate 이후에 run해보면 제대로 화면이 나오는 것을 확인하실 수 있습니다.

Resources에서 필요없는 부분들은 삭제해도 무방합니다. 

 

 

 

 

 

[Tuist] Version 4 / init / edit / generate / 초기설정 / 수정 / 실행

협업을 하는 iOS 개발자라면 무조건 써야하는 Tuist 입니다. 비슷한 툴로는 XCodegen이라는 프로그램도 있지만 YAML 파일을 사용하여 프로젝트의 구조와 설정을 정의하기 때문에, 러닝커브가 존재해

chanhhh.tistory.com

위 글은 Tuist의 기본 설정입니다.