[Swift] 코드만으로 초기 화면을 생성해 보았습니다.
소개
이번에는 스토리 보드를 사용하지 않고 코드만으로 초기 화면까지 작성해 보겠습니다.
실천
앱을 시작하려면 AppDelegate.swift를 사용해야 합니다.
그러나 iOS 13.0 이상에서는 SceneDelegate.swift를 사용해야 하는 것 같습니다. (주의: 사용하지 않는 방법도 있는 것 같습니다.)
이번에는 알기 쉬웠던 AppDelegate.swift 와 SceneDelegate.swift 를 사용한 방법을 소개하고 싶습니다.
AppDelegate.swift
앱을 시작하려면 AppDelegate.swift를 사용해야 합니다.
그러나 iOS 13.0 이상에서는 SceneDelegate.swift를 사용해야 하는 것 같습니다. (주의: 사용하지 않는 방법도 있는 것 같습니다.)
이번에는 알기 쉬웠던 AppDelegate.swift 와 SceneDelegate.swift 를 사용한 방법을 소개하고 싶습니다.
AppDelegate.swift
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
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를 사용하지 않는 방법도 있는 것 같습니다만, 또 다른 기회로 하고 싶습니다.
여기까지 봐 주셔서 감사합니다, 여러분의 배움의 도움이 되면 다행입니다.
참고문헌
무사히 코드만으로 만들 수 있었습니다.
AppDelegate.swift 및 SceneDelegate.swift를 사용하여 코드만으로 앱 시작을 구현할 수 있었습니다.
iOS 13.0 이상에서도 SceneDelegate.swift를 사용하지 않는 방법도 있는 것 같습니다만, 또 다른 기회로 하고 싶습니다.
여기까지 봐 주셔서 감사합니다, 여러분의 배움의 도움이 되면 다행입니다.
참고문헌
Reference
이 문제에 관하여([Swift] 코드만으로 초기 화면을 생성해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/work16087y0rha/items/8010eef49e67b3edb791텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)