1
2

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 1 year has passed since last update.

SwiftUIでViewを拡張してViewModifierを使いやすくする。

Posted at

概要

SwiftUIでViewを拡張してViewModifierを実装する方法を紹介します。
ViewModifierを使ってViewをカスタマイズした時に呼び出しを簡単にすることができるようになります。

ViewModifierの作成

まずは、ViewをカスタマイズするViewModifierを作成します。

ViewModifierの作成
struct ExampleViewExtensionView: View {
    var body: some View {
        Text("Hello, SwiftUI!")
	    //ViewModifierの適用
            .modifier(ExampleViewModifier())
    }
}


//ViewModifierの作成
struct ExampleViewModifier: ViewModifier {
    func body(content: Content) -> some View {
        content
            .padding()
            .background(.quaternary, in: Capsule())
    }
}

自分で作成したViewModifierを適用する際には.modifier()を使う必要があります。
機能的には全く問題はありませんがViewModifierに引数を与えたりするようになると冗長になります。

Viewのextension

先ほど作成したViewModifierをViewをextensionすることで使いやすくしていきます。

Viewのextension例
extension View {
    func ViewModifierの名前() -> some View {
        modifier(自分で作成したViewModifier)
    }
}

このようにViewをextensionすることでViewModifierを使いやすくすることができます。

Viewのextension
struct ExampleViewExtensionView: View {
    var body: some View {
        Text("Hello, SwiftUI!")
            //ViewModifierの適用
            .exampleViewModifier()
    }
}


//ViewModifierの作成
struct ExampleViewModifier: ViewModifier {
    func body(content: Content) -> some View {
        content
            .padding()
            .background(.quaternary, in: Capsule())
    }
}


//Viewの拡張
extension View {
    func exampleViewModifier() -> some View {
        modifier(ExampleViewModifier())
    }
}

Viewをextensionで拡張することでViewにViewModifierを適用することが簡単になります。先ほども述べたようにViewModifierの引数を使うようになるとViewをextensionしたほうが使いやすくなると思います。

まとめ

ViewModifierを適用するためにはViewの拡張は必ずしも必要ではありませんが、知っておくと便利な機能です。ViewModifierメソッドの戻り値にsome Viewを使用していることを知っているとよりSwiftUIに対する理解が深くなるとも思います。
機会があればぜひ試してみてください。

1
2
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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?