SwiftUI

2023 年 10 月 8 日

SwiftUI 設定 macOS Window 視窗的預設位置

已複製到剪貼板


defaultPosition 可設定 Window 的預設位置。

SwiftUI 和 macOS
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 第一次被叫出來時有效。

分享文章

已複製到剪貼板

主題文章

查看 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

最新文章