SwiftUI - मैं किसी दृश्य की पृष्ठभूमि का रंग कैसे बदल सकता हूँ?


122

मैं बाहर की कोशिश कर SwiftUIरहा हूं और मुझे आश्चर्य है कि यह पृष्ठभूमि का रंग बदलने के लिए सीधा नहीं लगता है View। आप इसका उपयोग कैसे करते हैं SwiftUI?

जवाबों:


130

स्क्रीन का बैकग्राउंड कलर

(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 पर रखना महत्वपूर्ण है।


6
क्या आप जानते हैं कि नेविगेशन व्यू के लिए पृष्ठभूमि का रंग कैसे बदलना है?
२०:४०

3
हालाँकि, यह तब काम करेगा जब आपके पास एक नेविगेशन व्यू और एक सूची होगी या नेविगेशन बार शीर्षक स्क्रॉल नहीं होगा
रिचर्ड

2
मैंने दोनों को बिना किसी किस्मत के आज़माया। Ive एक नेविगेशन दृश्य और स्क्रोलव्यू के साथ काम करने वाले स्क्रीन बैकग्राउंड कलर को प्राप्त करने का एक तरीका जानने की कोशिश कर रहा है
रिचर्ड विदरस्पून

1
अरे @Ryan, मैंने अपने समाधान .edgesIgnoringSafeArea(.all)को केवल रंग में स्थानांतरित करने के लिए अपडेट किया और किसी अन्य सामग्री से नहीं। यह आपके लिए बेहतर काम करना चाहिए।
मार्क Moeykens

1
नेवीगेशन व्यू के बारे में, ऊपर दिखाए गए नेविगेशनस्टॉक के ठीक अंदर ZStack मेथड का उपयोग करें जैसा कि यहाँ दिखाया गया है: stackoverflow.com/a/58230473/457478
रेयान

129

आप कुछ ऐसा कर सकते हैं:

.background(Color.black)

आपके विचार के आसपास।

जैसे। डिफ़ॉल्ट टेम्पलेट से (मैं इसे एक समूह के आसपास शामिल कर रहा हूँ):

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

इसमें कुछ अपारदर्शिता जोड़ने के लिए, आप .opacityविधि को भी जोड़ सकते हैं :

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

तुम भी अध्यक्ष एवं प्रबंध निदेशक द्वारा देखने के तत्व का निरीक्षण का इस्तेमाल करते हैं + देखें और क्लिक पर क्लिक कर सकते हैं Show SwiftUI Inspector> Background> आपका रंग

देखें का निरीक्षण करें

विस्तार से देखें निरीक्षण


4
मैं इसे नेविगेशन दृश्य के लिए उपयोग नहीं कर सका क्या आपके पास नेविगेशन दृश्य के साथ क्या करने का कोई विचार है?
१०:३०

आप कौन सा संस्करण उपयोग कर रहे हैं?
जूनियर जूनियर

एलाय्यासा, यूनावीगेशनबेर.नियरेंस ()। बैकग्राउंडरकलर
.ब्लाक

जब मैं रेक्टेंगल () का उपयोग कर रहा हूं, तो मैं एक काले भरे क्षेत्र के साथ समाप्त होता हूं।
क्रिस प्रिंस


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

1
ध्यान दें कि आप जोड़ने की जरूरत .edgesIgnoringSafeArea()के लिए पृष्ठभूमि रंग । UIKit से आने वाला यह विचित्र है, लेकिन यह काम करता है!
mbxDev

1
नोट: यह काम करता है क्योंकि Spacer()VStack को स्क्रीन की ऊंचाई पर धकेल रहा है।
मार्क Moeykens

9

के लिए List:

सभी SwiftUI के iOS में Listएक द्वारा समर्थित हैं UITableView। इसलिए आपको 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's HostingViewController(अभी तक) की पृष्ठभूमि का रंग नहीं हटा सकते हैं , इसलिए हम कुछ navigationViewविचारों को पदानुक्रम के माध्यम से नहीं देख सकते हैं । आपको एपीआई के लिए इंतजार करना चाहिए या उन विचारों को नकली करने की कोशिश करनी चाहिए ( अनुशंसित नहीं )।


इसी तरह का प्रश्न, सूची पंक्ति पर रंग सेट करने के बजाय, मैं इसे कैसे पारदर्शी बना सकता हूं, ऐसा लगता है कि मेरे सभी प्रयास अंतर्निहित रंग प्रकट करने में विफल हैं और पंक्तियां सफेद रहती हैं, विशेष रूप से, ListCoreCellHostयह सफेद रहता है। pasteboard.co/JeWCgMV.png
tililani

ठीक है मुझे लगा कि 15 मिनट बाद यहाँ पोस्टिंग करनी है, UITableViewCell.appearance().backgroundColor = .clearसाथ ही सेट करना था । :)
tGilani

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

कई संभावनाएं: (स्विफ्टयूआई / एक्सकोड 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 का उपयोग करें

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

0

नेविगेशन दृश्य उदाहरण:

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.