概要
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で背景色が設定できなかったときは混乱してしまいました。