나는 시도하기 시작 해요 SwiftUI
그리고 나는의 배경색을 변경하는 간단한 될 것 같지 않습니다 놀랍군요 View
. 어떻게 사용 SwiftUI
합니까?
나는 시도하기 시작 해요 SwiftUI
그리고 나는의 배경색을 변경하는 간단한 될 것 같지 않습니다 놀랍군요 View
. 어떻게 사용 SwiftUI
합니까?
답변:
(Xcode 버전 12 기준)
원본 포스터가 전체 화면의 배경색인지 개별보기의 배경색인지 잘 모르겠습니다. 따라서 전체 화면의 배경색을 설정하는이 답변을 추가하겠습니다.
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
에 바로 컬러 주요 내용이 너무 안전 영역 가장자리를 무시되지 않도록.
.edgesIgnoringSafeArea(.all)
다른 콘텐츠가 아닌 색상으로 만 이동 하도록 솔루션을 업데이트했습니다 . 이것은 당신을 위해 더 잘 작동합니다.
다음과 같이 할 수 있습니다.
.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
> 색상
이렇게
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()
받는 배경 색상 . UIKit에서 오는 것은 기괴하지만 작동합니다!
Spacer()
VStack을 화면 높이로 밀기 때문에 작동합니다 .
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
)을 사용할 수 있습니다.
또한이 결과를 먼저보십시오.
보시다시피 다음과 같이 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
UITableViewCell.appearance().backgroundColor = .clear
. :)
이 솔루션이 작동할까요? :
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
}
다양한 가능성 : (SwiftUI / Xcode 11)
1 .background(Color.black) //for system colors
2 .background(Color("green")) //for colors you created in Assets.xcassets
도움이되기를 바랍니다 :)
뷰의 배경색을 변경하는 수정자를 선언하고 싶습니다.
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)
}
}
탐색 표시 줄 색상 사용자 지정에 아래 코드 사용
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"))
}
}
}
Xcode 11.5
ZStack을 사용하여 SwiftUI의 기본보기에 배경색 또는 이미지를 추가하기 만하면됩니다.
struct ContentView: View {
var body: some View {
ZStack {
Color.black
}
.edgesIgnoringSafeArea(.vertical)
}
}
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")
}
}