Ich fange an zu probieren SwiftUI
und bin überrascht, dass es nicht einfach zu sein scheint, die Hintergrundfarbe von a zu ändern View
. Wie machst du das mit SwiftUI
?
view
background
background-color
modifier
swiftui
jeremyabannister
quelle
quelle
Hintergrundfarbe des Bildschirms
(Ab Xcode Version 12)
Ich bin mir nicht sicher, ob das Originalplakat die Hintergrundfarbe des gesamten Bildschirms oder einzelner Ansichten bedeutet. Also füge ich einfach diese Antwort hinzu, um die Hintergrundfarbe des gesamten Bildschirms festzulegen.
Verwenden von ZStack
var body: some View { ZStack { Color.purple .ignoresSafeArea() // Your other content here // Other layers will respect the safe area edges } }
Ich habe
.ignoresSafeArea()
sonst hinzugefügt , es wird an sicheren Bereichsrändern anhalten.Verwenden des Überlagerungsmodifikators
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) }) }
Hinweis: Es ist wichtig , das zu halten ,
.ignoresSafeArea
auf nur die Farbe , damit Ihr Hauptinhalt ist die sicheren Bereich Kanten nicht zu ignorieren.quelle
.edgesIgnoringSafeArea(.all)
nur die Farbe und nicht den anderen Inhalt zu verwenden. Dies sollte für Sie besser funktionieren.Füllen Sie den gesamten Bildschirm aus
var body : some View{ Color.green.edgesIgnoringSafeArea(.all) }
quelle
so was
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)) } }
quelle
.edgesIgnoringSafeArea()
die Hintergrundfarbe hinzufügen müssen . Von UIKit zu kommen ist bizarr, aber es funktioniert!Spacer()
VStack auf die Höhe des Bildschirms geschoben wird.Für
List
:Alle SwiftUIs
List
werden von einemUITableView
in iOS unterstützt. Sie müssen also die Hintergrundfarbe der tableView ändern . Aber daColor
undUIColor
Werte etwas unterschiedlich sind, können Sie die loswerdenUIColor
.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) } }
Jetzt können Sie einen beliebigen Hintergrund (einschließlich aller
Color
s) verwendenSchauen Sie sich auch zuerst dieses Ergebnis an:
Wie Sie sehen können, können Sie die Farbe jedes Elements in der Ansichtshierarchie wie folgt festlegen:
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) } } }
Und der erste ist
window
:Das häufigste Problem ist, dass wir die Hintergrundfarbe von SwiftUIs
HostingViewController
(noch) nicht entfernen können , sodass wir einige der Ansichten nicht wienavigationView
in der Ansichtshierarchie sehen können. Sie sollten auf die API warten oder versuchen, diese Ansichten zu fälschen ( nicht empfohlen ).quelle
ListCoreCellHost
, die weiß bleibt. pasteboard.co/JeWCgMV.pngUITableViewCell.appearance().backgroundColor = .clear
. :)Würde diese Lösung funktionieren?:
Fügen Sie SceneDelegate die folgende Zeile hinzu: 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 }
quelle
Mehrere Möglichkeiten: (SwiftUI / Xcode 11)
1
.background(Color.black) //for system colors
2
.background(Color("green")) //for colors you created in Assets.xcassets
Hoffe es hilft :)
quelle
Ich möchte einen Modifikator zum Ändern der Hintergrundfarbe einer Ansicht deklarieren.
extension View { func background(with color: Color) -> some View { background(GeometryReader { geometry in Rectangle().path(in: geometry.frame(in: .local)).foregroundColor(color) }) } }
Dann benutze ich den Modifikator, indem ich eine Farbe an eine Ansicht übergebe.
struct Content: View { var body: some View { Text("Foreground Label").foregroundColor(.green).background(with: .black) } }
quelle
Sie können einfach die Hintergrundfarbe einer Ansicht ändern:
var body : some View{ VStack{ Color.blue.edgesIgnoringSafeArea(.all) } }
und Sie können auch ZStack verwenden:
var body : some View{ ZStack{ Color.blue.edgesIgnoringSafeArea(.all) } }
quelle
Xcode 11.5
Verwenden Sie einfach ZStack, um Ihrer Hauptansicht in SwiftUI Hintergrundfarben oder Bilder hinzuzufügen
struct ContentView: View { var body: some View { ZStack { Color.black } .edgesIgnoringSafeArea(.vertical) } }
quelle
Verwenden Sie den folgenden Code für die Farbanpassung der Navigationsleiste
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")) } } }
quelle
NavigationView Beispiel:
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") } }
quelle
Der Code für den Szenendelegierten in der Swift-Benutzeroberfläche
Hintergrundfarbe der Inhaltsansicht
quelle