11
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【SwiftUI】TabViewの基本的な使い方

Posted at

先日、私にとって初のiOSアプリがリリースとなりましたので、開発に使った技術を細分化してアウトプットしていこうかなと思います。良かったらインストールしてみてください。

わかりすと -勉強サポートアプリ-

TabViewとは

複数の子ビューを切り替えることのできるビュー。

公式リファレンス

実際の動作

コード

上の動画のソースコードになります。

ContentView.swift
struct ContentView: View {
    var body: some View {
        TabView{
            FirstPage() //1枚目の子ビュー
                .tabItem {
                    Image(systemName: "1.circle.fill") //タブバーの①
                }
            SecondPage() //2枚目の子ビュー
                .tabItem {
                    Image(systemName: "2.circle.fill") //タブバーの②
                }
        }
    }
}

下はそれぞれ子ビューの中身です。

FirstPage.swift
struct FirstPage: View {
    var body: some View {
        Text("1枚目")
            .font(.title)
            .foregroundColor(.green)
    }
}
SecondPage.swift
struct SecondPage: View {
    var body: some View {
        Text("2枚目")
            .font(.title)
            .foregroundColor(.red)
    }
}

このように、TabViewの{}内に子となるビューを書くと、それらを切り替えてひとつずつ表示できるようになります。
上の例ではビューを2つにしましたが、3つ以上にも対応しており、iPhoneであれば5つまでならそのままタブバーに表示されます。
(iPadなら8つまでそのままタブバーに表示できます。)

スクリーンショット 2021-02-22 23.37.24.png

6つ以上になるとタブバーの右側に「More」と書かれたボタンが自動的に作られ、5つ目以降のタブバーがすべて内包されます。

スクリーンショット 2021-02-22 23.36.24.png

tabItemモディファイア

タブバーに表示するビューを指定できます。tabItemがなくてもタブバーは作られますが、何も書かれていないタブになりどこを押せばいいかわかりづらくなるため、基本はtabItemを付けるべきかと思います。

公式リファレンス

tabItemの{}内にはImageとTextを指定して組み合わせることができ、VStackを使わなくても自動的に縦並びになります。

スクリーンショット 2021-02-23 0.07.05.png

タブバーの色はデフォルトが青となっていますが、TabViewのaccentColorを指定することにより、色の変更が可能です。

ContentView.swift
struct ContentView: View {
    var body: some View {
        TabView{
            Text("1")
                .tabItem {
                    Image(systemName: "message.fill")
                    Text("メッセージ")
                }
            Text("2")
                .tabItem {
                    Image(systemName: "magnifyingglass")
                    Text("さがす")
                }
            Text("3")
                .tabItem {
                    Image(systemName: "face.smiling.fill")
                    Text("スタンプ")
                }
        }
        .accentColor(.green) //ここで色の指定
    }
}

スクリーンショット 2021-02-23 0.18.26.png

まとめ

TabViewはTwitterやLINEなど多くのアプリで見かけるような画面切り替えを可能にするビューです。ぜひ使いこなしてかっこいいアプリを作りましょう。

参考文献

11
14
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
11
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?