Я начинаю попробовать SwiftUI
, и я удивлен, что он, кажется, не быть простым, чтобы изменить цвет фона View
. Как вы делаете это с помощью SwiftUI
?
SwiftUI - Как мне изменить цвет фона представления?
Ответ 1
Цвет фона экрана
(Начиная с версии Xcode 11.1 (11A1027)
Я не уверен, означал ли оригинальный постер цвет фона всего экрана или отдельных видов. Поэтому я просто добавлю этот ответ, чтобы установить цвет фона всего экрана.
Использование ZStack
var body: some View {
ZStack
{
Color.purple
.edgesIgnoringSafeArea(.all)
// Your other content here
// Other layers will respect the safe area edges
}
}
Я добавил .edgesIgnoringSafeArea(.all)
, в противном случае он остановится на полях безопасной области.
Использование модификатора наложения
var body: some View {
Color.purple
.edgesIgnoringSafeArea(.vertical) // Ignore just for the color
.overlay(
VStack(spacing: 20) {
Text("Overlay").font(.largeTitle)
Text("Example").font(.title).foregroundColor(.white)
})
}
Примечание. Важно, чтобы .edgesIgnoringSafeArea
оставался только на цвете, чтобы основное содержание не игнорировало края безопасной области.
Ответ 2
Вы можете сделать что-то вроде:
.background(Color.black)
вокруг вашего взгляда.
например. из шаблона по умолчанию (я включаю его в группу):
var body: some View {
Group {
Text("Hello SwiftUI!")
}
.background(Color.black)
}
Чтобы добавить немного прозрачности, вы также можете добавить метод .opacity
:
.background(Color.black.opacity(0.5))
Вы также можете использовать элемент проверки представления с помощью CMD + щелкнуть по представлению и щелкнув Show SwiftUI Inspector
> Background
> Ваш цвет
Ответ 3
как это
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))
}
}
Ответ 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
}
Ответ 5
Если вы все еще не видите изменения фона, включите/выключите темный режим на устройстве или в симуляторе.
Ответ 6
Несколько возможностей: (SwiftUI/Xcode 11)
1 .background(Color.black) //for system colors
2 .background(Color("green")) //for colors you created in Assets.xcassets
- В противном случае вы можете сделать Command + Click для элемента и изменить его оттуда.
Надеюсь, это поможет :)
Ответ 7
Для List
:
Все SwiftUI List
поддерживаются UITableView
в iOS. поэтому вам нужно изменить цвет фона tableView. Но поскольку значения Color
и UIColor
немного отличаются, вы можете избавиться от UIColor
.
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
), который хотите