SwiftUI-ビューの背景色を変更するにはどうすればよいですか?


回答:


128

次のようなことができます。

.background(Color.black)

あなたの見解の周り。

例えば。デフォルトのテンプレートから(私はそれをグループの周りに包含しています):

    var body: some View {
        VStack {
          Text("Hello SwiftUI!")
        }
       .background(Color.black)
    }

不透明度を追加するために、.opacityメソッドを追加することもできます。

.background(Color.black.opacity(0.5))

また、CMDによってビューの要素を検査を利用することが+表示とクリックをクリックすることができますShow SwiftUI Inspector> Background>あなたの色

ビューを検査

詳細ビューを検査する


128

画面の背景色

(Xcodeバージョン12以降)

元のポスターが画面全体の背景色を意味するのか、個々のビューの背景色を意味するのかはわかりません。したがって、画面全体の背景色を設定するというこの回答を追加します。

ZStackの使用

var body: some View {
    ZStack
        {
            Color.purple
                .ignoresSafeArea()
            
            // Your other content here
            // Other layers will respect the safe area edges
    }
}

私は追加.ignoresSafeArea()それが安全なエリアの余白で停止する、そうでありません。

オーバーレイモディファイヤの使用

var body: some View {
    Color.purple
        .ignoresSafeArea(.vertical) // Ignore just for the color
        .overlay(
            VStack(spacing: 20) {
                Text("Overlay").font(.largeTitle)
                Text("Example").font(.title).foregroundColor(.white)
        })
}

注:メインコンテンツが安全な領域のエッジも無視しないように、色だけを.ignoresSafeAreaオンにしておくことが重要です。



15

このような

struct ContentView : View {
    @State var fullName: String = "yushuyi"
    var body: some View {        
        VStack
            {
                TextField($fullName).background(SwiftUI.Color.red)
                Spacer()
        }.background(SwiftUI.Color.yellow.edgesIgnoringSafeArea(.all))
    }
}

9

の場合List

すべてのSwiftUIListUITableView、iOSのによってサポートされています。したがって、tableViewの背景色を変更する必要があります。ただし、ColorとのUIColor値はわずかに異なるため、を取り除くことができますUIColor

struct ContentView : View {
    init(){
        UITableView.appearance().backgroundColor = .clear
    }
    
    var body: some View {
        List {
            Section(header: Text("First Section")) {
                Text("First Cell")
            }
            Section(header: Text("Second Section")) {
                Text("First Cell")
            }
        }
        .background(Color.yellow)
    }
}

これで、任意の背景(すべてを含むColor)を使用できます


また、最初にこの結果を見てください:

階層を表示

ご覧のとおり、ビュー階層の各要素の色は次のように設定できます。

struct ContentView: View {
    
    init(){
        UINavigationBar.appearance().backgroundColor = .green 
        //For other NavigationBar changes, look here:(https://stackoverflow.com/a/57509555/5623035)
    }

    var body: some View {
        ZStack {
            Color.yellow
            NavigationView {
                ZStack {
                    Color.blue
                    Text("Some text")
                }
            }.background(Color.red)
        }
    }
}

そして最初のものはwindow

window.backgroundColor = .magenta

非常に一般的な問題は、SwiftUIの背景色をHostingViewController(まだ)削除できないためnavigationView、ビュー階層のように一部のビューを表示できないことです。APIを待つか、それらのビューを偽造してみてください(非推奨)。


4

このソリューションは機能しますか?:

SceneDelegateに次の行を追加します:window.rootViewController?.view.backgroundColor = .black

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        if let windowScene = scene as? UIWindowScene {

                window.rootViewController?.view.backgroundColor = .black
}

4

いくつかの可能性:(SwiftUI / Xcode 11)

1 .background(Color.black) //for system colors

2 .background(Color("green")) //for colors you created in Assets.xcassets

  1. それ以外の場合は、要素に対してCommand+Clickを実行し、そこから変更できます。

お役に立てば幸いです:)


3

ビューの背景色を変更するための修飾子を宣言するのが好きです。

extension View {
  func background(with color: Color) -> some View {
    background(GeometryReader { geometry in
      Rectangle().path(in: geometry.frame(in: .local)).foregroundColor(color)
    })
  }
}

次に、ビューに色を渡すことで修飾子を使用します。

struct Content: View {

  var body: some View {
    Text("Foreground Label").foregroundColor(.green).background(with: .black)
  }

}

ここに画像の説明を入力してください


2

ビューの背景色を変更するだけです。

var body : some View{


    VStack{

        Color.blue.edgesIgnoringSafeArea(.all)

    }


}

また、ZStackを使用することもできます。

var body : some View{


    ZStack{

        Color.blue.edgesIgnoringSafeArea(.all)

    }


}

2

ナビゲーションバーの色をカスタマイズするには、以下のコードを使用してください

struct ContentView: View {

@State var msg = "Hello SwiftUI😊"
init() {
    UINavigationBar.appearance().backgroundColor = .systemPink

     UINavigationBar.appearance().largeTitleTextAttributes = [
        .foregroundColor: UIColor.white,
               .font : UIFont(name:"Helvetica Neue", size: 40)!]

    // 3.
    UINavigationBar.appearance().titleTextAttributes = [
        .font : UIFont(name: "HelveticaNeue-Thin", size: 20)!]

}
var body: some View {
    NavigationView {
    Text(msg)
        .navigationBarTitle(Text("NAVIGATION BAR"))       
    }
    }
}

ここに画像の説明を入力してください


2

Xcode 11.5

ZStackを使用して、SwiftUIのメインビューに背景色または画像を追加するだけです。

struct ContentView: View {
    var body: some View {
        ZStack {
            Color.black
        }
        .edgesIgnoringSafeArea(.vertical)
    }
}

0

NavigationViewの例:

var body: some View {
    var body: some View {
        NavigationView {
            ZStack {
                // Background
                Color.blue.edgesIgnoringSafeArea(.all)

                content
            }
            //.navigationTitle(Constants.navigationTitle)
            //.navigationBarItems(leading: cancelButton, trailing: doneButton)
            //.navigationViewStyle(StackNavigationViewStyle())
        }
    }
}

var content: some View {
    // your content here; List, VStack etc - whatever you want
    VStack {
       Text("Hello World")
    }
}

-6

中シーンデリゲートのコードスウィフトUI

コンテンツビューの背景色

window.rootViewController?.view.backgroundColor = .lightGray

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.