SwiftUI - Bir Görünümün arka plan rengini nasıl değiştiririm?


Yanıtlar:


120

Ş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 .opacityyö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

İnceleme Görünümü

Ayrıntılı Görünümü İncele


4
Navigasyon görünümü için kullanamadım, navigasyon görünümü ile ne yapacağınız konusunda bir fikriniz var mı?
atalayasa

Hangi sürümü kullanıyorsun?
juniorRubyist

atalayasa, UINavigationBar.appearance (). backgroundColor = .black
Kugutsumen

Bunu Rectangle () kullanarak yaptığımda, siyah dolgulu bir alan elde ediyorum.
Chris Prince

116

Ekranın Arka Plan Rengi

(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.

ZStack'i kullanma

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.

Kaplama Değiştiriciyi Kullanma

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.


6
NavigationView için arka plan rengini nasıl değiştireceğinizi biliyor musunuz?
atalayasa

3
Ancak, bir NavigationView ve bir listeniz varsa veya kaydırma görünümünüz varsa bu işe yarayacaktır, gezinme çubuğu başlığı daraltılmayacaktır
Richard Witherspoon

2
İkisini de şanssız denedim. Navigasyon görünümü ve kaydırma görünümü ile çalışan ekran arka plan rengini elde etmenin bir yolunu bulmaya çalışıyorum
Richard Witherspoon

1
Hey @Ryan, çözümlerimi .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ı.
Mark Moeykens

1
NavigationView ile ilgili olarak, burada gösterildiği gibi NavigationView'ün hemen içindeki ZStack yöntemini kullanın: stackoverflow.com/a/58230473/457478
Ryan

18

Tüm ekranı doldur

var body : some View{
    Color.green.edgesIgnoringSafeArea(.all)
}

görüntü açıklamasını buraya girin

görüntü açıklamasını buraya girin


15

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))
    }
}

1
Eklemek gerektiğini unutmayın .edgesIgnoringSafeArea()için arka plan rengi . UIKit'ten gelmek tuhaf, ama işe yarıyor!
mbxDev

1
Not: Bu çalışır çünkü Spacer()VStack'i ekranın yüksekliğine itiyor.
Mark Moeykens

9

Şunun için List:

Tüm SwiftUI'ler iOS'ta Lista tarafından desteklenir UITableView. bu nedenle tableView'in arka plan rengini değiştirmeniz gerekir . Ancak Colorve UIColordeğ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:

Hiyerarşiyi görüntüleyin

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 navigationViewgö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 ).


benzer bir soru, Liste satırına bir renk ayarlamak yerine, onu nasıl şeffaf hale getirebilirim, tüm girişimlerim temel rengi ortaya çıkarmada başarısız görünüyor ve satırlar beyaz ListCoreCellHostkalıyor , özellikle de beyaz kalan var . pasteboard.co/JeWCgMV.png
tGilani

Tamam, 15 dakika sonra buraya yazmanın da ayarlanması gerektiğini düşündüm UITableViewCell.appearance().backgroundColor = .clear. :)
tGilani

4

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
}

4

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

  1. Aksi takdirde eleman üzerinde Command+ yapabilir Clickve oradan değiştirebilirsiniz.

Umarım yardımcı olur :)


3

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)
  }

}

görüntü açıklamasını buraya girin


2

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)

    }


}

2

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)
    }
}

1

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"))       
    }
    }
}

görüntü açıklamasını buraya girin


0

NavigationView Örneği:

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

Swift kullanıcı arayüzünde Sahne temsilcisi üzerindeki kod

İçerik görünümü arka plan rengi

window.rootViewController? .view.backgroundColor = .lightGray

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.