概要

SwiftUIを使ってiOSのアプリ開発をしていた際に、複数行の入力をするためのTextEditorの背景色を目立つ色に変更したいと思いました。

しかし、backgroundでカラーを設定しても反映されません。

今回この問題を解決した方法を紹介します。

環境

  • SwiftUI 2
  • Xcode 13

解決方法

調べてみると解決方法が見つかりました。

この解決方法は、あまりスマートではありませんが、これ以外の方法は見つかりませんでしたので、今回はこちらの方法で問題を解決しました。

解決方法として、Viewのinitで背景色のクリアを行います。

struct RegisterView: View {
    init() {
        // TextEditorの背景色を設定するため
        UITextView.appearance().backgroundColor = .clear
    }

    var body: some View {
        VStack {
            TextEditor()
                .background(Color.green)
        }
    }
}

詳しいことは分かりませんが、TextEditorで最初に参照するカラーが設定されているため、それをクリアして、backgroundで設定したカラーを参照するようにしていることが予想されます。

私の場合は、TextEditorの背景色を変更することができました。

さいごに

TextFieldではこのような作業はいらないので、TextEditorで背景色が設定できなかったときは混乱してしまいました。