請看這一篇
Apple WWDC 2019 SwiftUI Essentials video
註: 可以打開右下角的三個點, 可以顯示字幕(有簡體中文)
天生支援 dark mode 的 SwiftUI Color
也就是說
原本 light 模式中, Label Font Color Deuault是黑色
APP畫面就會呈現為白底黑字
但轉換為 dark模式
Label Font Color Deuault是白色
如依原本設計, 就會變成白底白字畫面, 白色字體就看不到了
因此就要轉換畫面底色為黑色
但原來的 Button 圖片是黑色外框, 這時就發生鋸齒,
Button 圖片也要一起更換重畫.
解決方案來源:
How to check if Dark Appearance is enabled tvOS
Apple Developer UI Element Colors
Apple Developer UIColor
請在 info.plist增加一個Key
<key>UIUserInterfaceStyle</key>
<string>Automatic</string>
判斷是否為 iOS13
if #available(iOS 13.0, *) { // Fallback on 13.0 versions checkInterfaceStyle() } else { // Fallback on earlier versions }
取得 brightness mode
func checkInterfaceStyle() { guard(traitCollection.responds(to: #selector(getter: UITraitCollection.userInterfaceStyle))) else { return } let style = traitCollection.userInterfaceStyle switch style { case .light: print("light") case .dark: print("dark") case .unspecified: print("unspecified") @unknown default: print("unknown default") fatalError() } }
這是一個 Label Text 在新舊版本之間的程式差異
Main Storyboard中畫面的設定如下
Main View 的 Background 設定為 System Background Color
System Background Color light Mode 其實是白色
System Background Color dark Mode 其實是黑色
Label Color 設定為 Defalut( Label Color)
Defalut Label Color light Mode 其實是黑色
Defalut Label Color dark Mode 其實是白色
if #available(iOS 13.0, *) { if( MyLabel.textColor != UIColor.label) {// 黑底白字, 只適用於 iOS 13.0以上版本 MyLabel.textColor = UIColor.label } } else { // Fallback on earlier versions if( MyLabel.textColor != UIColor.darkText) { // 白底黑字 MyLabel.textColor = UIColor.darkText } }
沒有留言:
張貼留言