Denemeye başlıyorum ve a'nın SwiftUI
arka plan rengini değiştirmenin kolay olmadığına şaşırıyorum View
. Bunu kullanarak nasıl yaparsınız SwiftUI
?
Denemeye başlıyorum ve a'nın SwiftUI
arka plan rengini değiştirmenin kolay olmadığına şaşırıyorum View
. Bunu kullanarak nasıl yaparsınız SwiftUI
?
Yanıtlar:
Şunun gibi bir şey yapabilirsiniz:
.background(Color.black)
bakış açınızın etrafında.
Örneğin. varsayılan şablondan (onu bir Grup etrafında çevreliyorum):
var body: some View {
VStack {
Text("Hello SwiftUI!")
}
.background(Color.black)
}
Biraz opaklık eklemek için .opacity
yöntemi de ekleyebilirsiniz :
.background(Color.black.opacity(0.5))
Ayrıca CMD tarafından görüş öğeyi denetle faydalanmak + Görünüm ve tıklayarak tıklayabilirsiniz Show SwiftUI Inspector
> Background
> Sizin Renk
(Xcode Sürüm 12'den itibaren)
Orijinal posterin tüm ekranın arka plan rengini mi yoksa tek tek görünümleri mi kastettiğinden emin değilim. Bu yüzden tüm ekranın arka plan rengini ayarlamak için bu cevabı ekleyeceğim.
var body: some View {
ZStack
{
Color.purple
.ignoresSafeArea()
// Your other content here
// Other layers will respect the safe area edges
}
}
.ignoresSafeArea()
Aksi takdirde ekledim , güvenli alan sınırlarında duracak.
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)
})
}
Not: Yalnızca rengi.ignoresSafeArea
açık tutmak önemlidir, böylece ana içeriğiniz güvenli alan kenarlarını da göz ardı etmez.
.edgesIgnoringSafeArea(.all)
diğer içeriklerin hiçbirine değil sadece renge geçecek şekilde güncelledim . Bu sizin için daha iyi çalışmalı.
Tüm ekranı doldur
var body : some View{
Color.green.edgesIgnoringSafeArea(.all)
}
bunun gibi
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))
}
}
.edgesIgnoringSafeArea()
için arka plan rengi . UIKit'ten gelmek tuhaf, ama işe yarıyor!
Spacer()
VStack'i ekranın yüksekliğine itiyor.
List
:Tüm SwiftUI'ler iOS'ta List
a tarafından desteklenir UITableView
. bu nedenle tableView'in arka plan rengini değiştirmeniz gerekir . Ancak Color
ve UIColor
değerleri biraz farklı olduğu için 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)
}
}
Artık istediğiniz herhangi bir arka planı (tüm arka planlar dahil Color
) kullanabilirsiniz
Ayrıca İlk önce şu sonuca bakın:
Gördüğünüz gibi, Görünüm hiyerarşisindeki her bir öğenin rengini şu şekilde ayarlayabilirsiniz:
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)
}
}
}
Ve ilki window
:
window.backgroundColor = .magenta
En yaygın sorun, SwiftUI'lerin arka plan rengini HostingViewController
(henüz) kaldıramıyoruz , bu nedenle navigationView
görünümler hiyerarşisi gibi bazı görünümleri göremiyoruz . API'yi beklemeli veya bu görünümleri taklit etmeye çalışmalısınız ( önerilmez ).
ListCoreCellHost
kalıyor , özellikle de beyaz kalan var . pasteboard.co/JeWCgMV.png
UITableViewCell.appearance().backgroundColor = .clear
. :)
Bu çözüm işe yarar mı ?:
SceneDelegate'e şu satırı ekleyin: 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
}
Birkaç olasılık: (SwiftUI / Xcode 11)
1 .background(Color.black) //for system colors
2 .background(Color("green")) //for colors you created in Assets.xcassets
Umarım yardımcı olur :)
Bir görünümün arka plan rengini değiştirmek için bir değiştirici bildirmeyi seviyorum.
extension View {
func background(with color: Color) -> some View {
background(GeometryReader { geometry in
Rectangle().path(in: geometry.frame(in: .local)).foregroundColor(color)
})
}
}
Sonra bir rengi bir görünüme geçirerek değiştiriciyi kullanıyorum.
struct Content: View {
var body: some View {
Text("Foreground Label").foregroundColor(.green).background(with: .black)
}
}
Bir Görünümün Arka Plan Rengini Basitçe Değiştirebilirsiniz:
var body : some View{
VStack{
Color.blue.edgesIgnoringSafeArea(.all)
}
}
ve ZStack'i de kullanabilirsiniz:
var body : some View{
ZStack{
Color.blue.edgesIgnoringSafeArea(.all)
}
}
Xcode 11.5
SwiftUI'deki ana görünümünüze arka plan rengi veya resimler eklemek için sadece ZStack'i kullanın
struct ContentView: View {
var body: some View {
ZStack {
Color.black
}
.edgesIgnoringSafeArea(.vertical)
}
}
Gezinme Çubuğu Renk Özelleştirmesi İçin Aşağıdaki Kodu Kullanın
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"))
}
}
}
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")
}
}