試し始めましSwiftUI
たが、の背景色を変更するのが簡単ではないように思われることに驚いていView
ます。これをどのように使用しSwiftUI
ますか?
試し始めましSwiftUI
たが、の背景色を変更するのが簡単ではないように思われることに驚いていView
ます。これをどのように使用しSwiftUI
ますか?
回答:
次のようなことができます。
.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
>あなたの色
(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
オンにしておくことが重要です。
画面全体に表示
var body : some View{
Color.green.edgesIgnoringSafeArea(.all)
}
List
:すべてのSwiftUIList
はUITableView
、iOSのによってサポートされています。したがって、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の背景色をHostingViewController
(まだ)削除できないためnavigationView
、ビュー階層のように一部のビューを表示できないことです。APIを待つか、それらのビューを偽造してみてください(非推奨)。
このソリューションは機能しますか?:
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)
}
}
ビューの背景色を変更するだけです。
var body : some View{
VStack{
Color.blue.edgesIgnoringSafeArea(.all)
}
}
また、ZStackを使用することもできます。
var body : some View{
ZStack{
Color.blue.edgesIgnoringSafeArea(.all)
}
}
ナビゲーションバーの色をカスタマイズするには、以下のコードを使用してください
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")
}
}