はい。私はこれがロケット科学であってはならないことを知っています。ダークモードが機能していないようで、ドキュメントを数回読みました。誰かが私が行方不明のものを見つけられることを願っています。
テストを簡単にするために、plistモードをダークモードに設定しました。
私のコンテンツビューは次のようになります。
struct ContentView : View {
var body: some View {
VStack {
Text("Hello World")
Text("Yo yo yo")
.color(Color("darkModeColor"))
}
}
}
私が何をしようとも、色は常にシアン色を帯びているはずの「すべて」の外観です。
Appleによって提供されるすべてのシステムセマンティックカラーは、「Hello World」テキストが白に変更されているのを確認できるので、正常に機能しているため、ダークモード自体は機能します。
Xcode 11 Beta 1でこの問題に遭遇しているアイデアはありますか?
これは、おそらくXcode 11のこのベータリリースのバグです。UIKitアプリケーションでダークモード機能を試しましたが、UIColor
を使用すると完全に機能しますが、Color
を使用すると同じ色が機能しませんSwiftUI。うまくいけば、これは次のリリースで修正されるでしょう。
pdate:この問題はXcode 11 betaで修正されました。
この現在の制限を克服するために使用できる実用的な(ただし非常に詳細な)ソリューションは、次のように現在の配色でパラメーター化されたメソッドでColorを拡張することです。
import SwiftUI
extension Color {
static let lightBackgroundColor = Color(white: 1.0)
static let darkBackgroundColor = Color(white: 0.0)
static func backgroundColor(for colorScheme: ColorScheme) -> Color {
if colorScheme == .dark {
return darkBackgroundColor
} else {
return lightBackgroundColor
}
}
}
そして、これらの色にアクセスする必要があるビューでは、配色の環境プロパティを追加し、それを使用して動的な色を取得します。
import SwiftUI
struct ColoredView : View {
@Environment(\.colorScheme) var colorScheme: ColorScheme
var body: some View {
Rectangle().fill(Color.backgroundColor(for: self.colorScheme))
}
}
コードで定義されたこれらの色は、Xcodeプレビューおよびシミュレーターで機能します。