SwiftUI

2024 年 1 月 7 日

SwiftUI 動態設定 Environment 環境變數

已複製到剪貼板


使用 transformEnvironment 可透過 closure 的方式,設定我們的 EnvironmentValue。

SwiftUI
SwiftUI

概覽:設定 EnvironmentValue 環境變數

以 SwiftUI 開發 App 時,如果要設定環境變數,我們通常會使用 .environment modifier,但這個 modifier 有個缺點,是我們必須直接告訴它我們要設定的值,而有時候我們想設定的 EnvironmentValue 卻又不是固定的,簡單一點可能可以透過三元表示式「判斷?值:值」,或複雜一點就要先透過 func 算好,再傳給 .environment modifier,這樣的動態設定 EnvironmentValue 寫起來就會有點複雜。

transformEnvironment 概覽

除了用 .environment modifier 設定環境變數,我們還有另外一種方法「transformEnvironment」,它厲害的地方在於,它不是吃一個要設定的值,而是吃一個 function,這代表我們可以把動態判斷要設定什麼 EnvironmentValue 的運算,直接寫在設定環境變數的 modifier 裡!這讓我們的程式更好追蹤。

透過 Func 轉換 EnvironmentValue

transformEnvironment 的用法很簡單,會像這樣:

@main
struct Example: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
        .transformEnvironment(\.colorScheme) { colorScheme in
            if ... {
                ...
                colorScheme = .light
            } else {
                ...
                colorScheme = .dark
            }
        }
    }
}

這裡例子,會先有個判斷,再執行對應的事,然後才是設定我們要的日夜間模式。

分享文章

已複製到剪貼板

主題文章

查看 SwiftUI

超級感謝

關於 XcodeProject

XcodeProject 創立於 2023,致力於協助開發者探索 Apple 的創新世界,學習在 iOS、iPadOS、macOS、tvOS、visionOS 與 watchOS 上開發 App,發現眾多技術與框架,讓開發者獲得更多能力。


Contacts

Ricky Chuang

XcodeProject

RickyChuang.xcodeproj@gmail.com

XcodeProject 聯絡

contact.xcodeproj@gmail.com

最新文章