本文主要是介绍SwiftUI 如何恣意定制和管理系统中的窗口(Window),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
概览
在苹果大屏设备上,我们往往需要借助多窗口(Multiwindow)来充分利用海量的显示空间,比如 Mac,iPad 以及 AppleTV 系统 等等。
所幸的是,SwiftUI 对多窗口管理提供了很好的支持。利用 SwiftUI 我们可以非常轻松的设置窗口在屏幕上的位置,大小以及拖动反馈。
在本篇博文中,您将学到如下内容:
- 概览
- 1. 限制窗口大小
- 2. 任性选择窗口放置位置
- 3. 检测窗口拖动状态
- 总结
SwiftUI 窗口经过几多进化已经愈发趋于成熟,小伙伴们值得信赖。那还等什么呢?让我们立即开始窗口大冒险吧!
Let‘s go!!!😉
1. 限制窗口大小
从 SwiftUI 5.0(iOS 17,macOS 13)开始,苹果新增了 defaultSize 视图修改器专门用来设置窗口的尺寸:
利用 defaultSize 修改器,我们可以任性设置 Window 的长与宽。如下代码所示,我们将 search 窗口的大小设置成了 500 points x 500 points:
struct SugarBotApp: App {var body: some Scene {WindowGroup {RootView()}WindowGroup(id: "search") {SearchFeatureView()}.defaultSize(width: 500, height: 500)}
}
除了设置窗口大小的初始值以外,我们还可以使用 SwiftUI 中的 windowResizability 修改器来决定后续用户能够如何更改窗口尺寸:
在下面的代码中,我们调用 windowResizability 修改器并传入 .contentSize 实参将 SearchFeatureView 的最大尺寸设置为其内容本身的大小,这意味着用户无法将 SearchFeatureView 窗口的尺寸需改为超越其视图内容“默认”的大小:
import SwiftUI@main
struct MacTextApp: App {var body: some Scene {WindowGroup {ContentView()}.defaultSize(.init(width: 300, height: 300))WindowGroup(id: "search") {SearchFeatureView()</
这篇关于SwiftUI 如何恣意定制和管理系统中的窗口(Window)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!