LoginSignup
0
5

More than 1 year has passed since last update.

Storyboard脱却への第一歩

Posted at

今回はStoryboardを使わない開発について書いていきます。
SwiftUIを勉強したということもあり、全てコードでの開発をしてみたいと思いました。

なぜStoryboardを使わない開発をするのか

一番大きな理由は、チーム開発時のコードレビューがやりにくいと感じたからです。
GitHub上では、StoryboardはXML形式で表示されます。XMLを眺めているだけだとViewがどんな見た目をしているのか把握することが難しいです。他には、コンフリクト修正をやりやすくするという点があります。Storyboardの場合だと、コンフリクトしている両ブランチをcloneしてどちらの見た目を優先するのか考える必要がありますが、SwiftファイルでViewを書くとその手間が省けるという利点があります。
後は個人的な理由ですが、私が使っているmacだとスペックがあまり高くないので、Storyboardを開くまでに時間がかかってしまい、ストレスに感じていることも理由の一つです。

でも初心者はStoryboardを使った方がいいかも

StoryboardはUIを直感的に配置でき、オートレイアウトもStoryboard上で完結させることができます。オートレイアウトは慣れが必要なのですが(私自身も試行錯誤しながらオートレイアウトつけます...)、Viewを配置することに関してはStoryboardは時間をかけずに簡単にできます。
入門書もStoryboardを使って紹介しているものが多いので、初心者はまずStoryboardを使ってiOSアプリ開発を体験した方が挫折せず取り組めるかと思います。

Main.storyboardを削除する

さて、ここから本題です。
実際に、Storyboardを使わない開発の第一歩を踏み出します。
スクリーンショット 2021-05-07 1.35.04.png
プロジェクト立ち上げ時にデフォルトでMain.storyboardあるので、このファイルを削除します。
「え? ホントに消すの?」と不安な人もいるかと思いますが、大丈夫です。思い切って消しましょう!!
この時点でビルドすると、「Mainっていう名前のstroyboardが見つけることができないよ」といった旨のエラーがでます。

 Info.plistのStoryboard Nameを削除

スクリーンショット 2021-05-07 1.42.22.png
上の写真にもあるようにStoryboard Nameの項目を削除します。
この時点でビルドすると、成功しますが、真っ黒な画面になります。

xcodeprojのMain Interfaceを空にする

スクリーンショット 2021-05-07 1.48.44.png
TARGETS > General > Development InfoにあるMain Interfaceの項目を空白に設定します。
この時点でもビルドすると、成功しますが、真っ黒な画面になります。

SceneDelegate.swiftを編集

以下の通りにSceneDelegate.swiftを編集します。

SceneDelegate.swift
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
        window?.rootViewController = ViewController()
        window?.makeKeyAndVisible()
}

rootViewControllerに設定することで、今回はViewControllerが初期画面として表示されます。

ViewController.swiftを編集

分かりやすいように背景を青色に設定してみます。

ViewController.swift
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .blue
    }
}

ビルド

Simulator Screen Shot - iPhone 12 Pro - 2021-05-07 at 02.png
無事、表示できました!!

0
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
5