SwiftUI-뷰의 배경색을 어떻게 변경합니까?


답변:


134

화면의 배경색

(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
NavigationView의 배경색을 변경하는 방법을 알고 있습니까?
atalayasa 19

3
당신이 붕괴되지 않습니다 탐색 모음 제목 NavigationView 및 목록이 나있는 ScrollView 경우에 그러나 작동합니다
리처드 위더스푼

2
나는 운없이 둘 다 시도했다. navigationView하고있는 ScrollView와 화면 배경 색상 작업 얻을 수있는 방법을 알아 내기 위해 노력하고 IVE
리처드 위더스푼

1
안녕하세요 @Ryan, .edgesIgnoringSafeArea(.all)다른 콘텐츠가 아닌 색상으로 만 이동 하도록 솔루션을 업데이트했습니다 . 이것은 당신을 위해 더 잘 작동합니다.
Mark Moeykens

1
NavigationView와 관련하여 다음과 같이 NavigationView 바로 내부에서 위의 ZStack 메서드를 사용합니다. stackoverflow.com/a/58230473/457478
Ryan

130

다음과 같이 할 수 있습니다.

.background(Color.black)

당신의 시야 주위.

예. 기본 템플릿에서 (그룹 주위에 포함) :

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

불투명도를 추가하려면 .opacity메서드를 추가 할 수도 있습니다 .

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

또한 CMD에 의해 뷰의 요소를 검사의 사용을 +보기 및 클릭 클릭 할 수 있습니다 Show SwiftUI Inspector> Background> 색상

검사보기

자세히보기 검사


4
내비게이션보기에 사용할 수 없었습니다. 내비게이션보기로 무엇을해야하는지 아십니까?
atalayasa 19.06.20

어떤 버전을 사용하고 있습니까?
juniorRubyist 21:29에

atalayasa, UINavigationBar.appearance ()의 backgroundColor = 까만.
Kugutsumen

Rectangle ()을 사용하여이 작업을 수행하면 검정색으로 채워진 영역이 생깁니다.
Chris Prince


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 2007

1
참고 : 이것은 Spacer()VStack을 화면 높이로 밀기 때문에 작동합니다 .
Mark Moeykens

9

대상 List:

모든 SwiftUI 는 iOS에서 List지원됩니다 UITableView. 따라서 tableView의 배경색을 변경해야합니다 . 그러나 ColorUIColor값이 약간 다르기 때문에 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)을 사용할 수 있습니다.


또한이 결과를 먼저보십시오.

계층보기

보시다시피 다음과 같이 View 계층 구조에서 각 요소의 색상을 설정할 수 있습니다.

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

매우 일반적인 문제는 HostingViewController(아직) SwiftUI의 배경색을 제거 할 수 없으므로 navigationView뷰 계층 구조를 통해 일부 뷰를 볼 수 없다는 것 입니다. API를 기다리거나 이러한 뷰를 가짜로 시도해야합니다 ( 권장되지 않음 ).


비슷한 질문은 목록 행에 색상을 설정하는 대신 어떻게 투명하게 만들 수 있습니까? 모든 시도가 기본 색상을 드러내지 못하고 행이 흰색으로 유지되는 것 같습니다. 특히 ListCoreCellHost흰색으로 유지됩니다. pasteboard.co/JeWCgMV.png
tGilani

좋아요, 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

다양한 가능성 : (SwiftUI / Xcode 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을 사용하여 SwiftUI의 기본보기에 배경색 또는 이미지를 추가하기 만하면됩니다.

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

0

NavigationView 예 :

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 UI의 Scene 델리게이트 코드

콘텐츠보기 배경색

window.rootViewController? .view.backgroundColor = .lightGray

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.