用 defaultPosition
可設定 Window 的預設位置。
SwiftUI 和 macOS
設定 Window 在螢幕中的預設位置
當 macOS app 被開啟時,會出現在螢幕的中央,這是系統預設,我們無法改變,但可以改變其他 app 定義的視窗的預設位置。
舉例來說,可以讓視窗開啟時,預設在螢幕的右下角。
@main
struct Example: App {
var body: some Scene {
WindowGroup {
ContentView()
}
WindowGroup(id: "secondWindow") {
SecondContentView()
}
.defaultPosition(.bottomTrailing)
}
}
預定義的 UnitPoint
.bottomTrailing
是其中一個 Apple 預先定義好的 UnitPoint,其他的還有:
UnitPoint | 說明 |
---|---|
.zero | 原點(螢幕左上角) |
.topLeading | 螢幕左上角 |
.top | 螢幕上方中間的位置 |
.topTrailing | 螢幕右上角 |
.leading | 螢幕左邊中間的位置 |
.center | 螢幕中央 |
.trailing | 螢幕右邊中間的位置 |
.bottomLeading | 螢幕左下角 |
.bottom | 螢幕下方中間的位置 |
.bottomTrailing | 螢幕右下角 |
自訂 UnitPoint
除了使用 Apple 預定義的 UnitPoint,我們還能更明確的指定位置。
@main
struct Example: App {
var body: some Scene {
WindowGroup {
ContentView()
}
WindowGroup(id: "secondWindow") {
SecondContentView()
}
.defaultPosition(UnitPoint(x: 0.25, y: 0.5))
}
}
這裡的 x、y 值用意比較不直觀,以 x: 0.25
為例,意思是把「視窗左邊向右四分之ㄧ的位置」對齊「螢幕左邊向右四分之ㄧ的位置」。而 y: 0.5
就更好理解了,是「視窗高度一半的位置」對齊「螢幕高度一半的位置」。
討論
在 macOS 上,如果使用者有移動 Window 的位置,那系統就會記住這個位置,下次再開啟這個 Window 時,一樣還會是上次使用的位置,所以我們前面設定的 defaultSize
只會在 Window 第一次被叫出來時有效。
關於 XcodeProject
XcodeProject 創立於 2023,致力於協助開發者探索 Apple 的創新世界,學習在 iOS、iPadOS、macOS、tvOS、visionOS 與 watchOS 上開發 App,發現眾多技術與框架,讓開發者獲得更多能力。