在现场设置 UIWindowScene.PresentationStyle?
Set UIWindowScene.PresentationStyle on Scene?
我有一个示例视图,我想将其呈现为模态 window,类似于 iPadOS 15 中的邮件消息撰写 window:
WindowGroup("general.status", id: "create") { authorView }
.handlesExternalEvents(matching: ["starlight://create"])
.commands { TextEditingCommands() }
通过 handlesExternalEvents(matching:Set<String>)
进行此设置后,我可以使用带有自定义标识符的 openURL
打开 window,并且可以在多任务菜单中看到模式选项。然而,当打开这个window时,它仍然显示为全屏场景。我注意到在“将您的 iPad 应用提升到一个新的水平 (WWDC21)”中,您可以通过将呈现样式设置为 UIWindowScene.PresentationStyle.prominent
来为 UIKit 中的 window 设置呈现样式。但是,我在 SwiftUI 中找不到与此等效的内容。有没有一种方法可以在 SwiftUI 中执行此操作,或者调用一些 UIKit 代码来设置具有该激活条件的 WindowGroup(或 authorView
)?
我最初是在 https://developer.apple.com/forums/thread/700820 以及 r/SwiftUI 和 r/iOSProgramming 的开发者论坛上提出这个问题的,但我想涵盖我的基础并在这里提出问题,如果有人知道。
我已通过 TSI 就此特定问题联系了 Apple。从 SwiftUI 的当前版本开始,这是不可能的。他们建议我改用 .sheet
修饰符并放弃拆分 window 功能。否则,我可以创建一个 UISceneDelegate 并直接使用 UIKit API:
let options = UIWindowScene.ActivationRequestOptions()
options.preferredPresentationStyle = .prominent
let userActivity = NSUserActivity(activityType: SecondSceneDelegate.sceneUserActivityType)
userActivity.targetContentIdentifier = SecondSceneDelegate.sceneUserActivityType
UIApplication.shared.requestSceneSessionActivation(nil,
userActivity: userActivity,
options: options,
errorHandler: nil)
我有一个示例视图,我想将其呈现为模态 window,类似于 iPadOS 15 中的邮件消息撰写 window:
WindowGroup("general.status", id: "create") { authorView }
.handlesExternalEvents(matching: ["starlight://create"])
.commands { TextEditingCommands() }
通过 handlesExternalEvents(matching:Set<String>)
进行此设置后,我可以使用带有自定义标识符的 openURL
打开 window,并且可以在多任务菜单中看到模式选项。然而,当打开这个window时,它仍然显示为全屏场景。我注意到在“将您的 iPad 应用提升到一个新的水平 (WWDC21)”中,您可以通过将呈现样式设置为 UIWindowScene.PresentationStyle.prominent
来为 UIKit 中的 window 设置呈现样式。但是,我在 SwiftUI 中找不到与此等效的内容。有没有一种方法可以在 SwiftUI 中执行此操作,或者调用一些 UIKit 代码来设置具有该激活条件的 WindowGroup(或 authorView
)?
我最初是在 https://developer.apple.com/forums/thread/700820 以及 r/SwiftUI 和 r/iOSProgramming 的开发者论坛上提出这个问题的,但我想涵盖我的基础并在这里提出问题,如果有人知道。
我已通过 TSI 就此特定问题联系了 Apple。从 SwiftUI 的当前版本开始,这是不可能的。他们建议我改用 .sheet
修饰符并放弃拆分 window 功能。否则,我可以创建一个 UISceneDelegate 并直接使用 UIKit API:
let options = UIWindowScene.ActivationRequestOptions()
options.preferredPresentationStyle = .prominent
let userActivity = NSUserActivity(activityType: SecondSceneDelegate.sceneUserActivityType)
userActivity.targetContentIdentifier = SecondSceneDelegate.sceneUserActivityType
UIApplication.shared.requestSceneSessionActivation(nil,
userActivity: userActivity,
options: options,
errorHandler: nil)