Ios 如何忽略SwiftUI模式背景,或使模式背景清晰/透明?

Ios 如何忽略SwiftUI模式背景,或使模式背景清晰/透明?,ios,swift,background,swiftui,transparent,Ios,Swift,Background,Swiftui,Transparent,目前,我们为swiftUI modal提供了免费的不透明白/黑背景。是否仍有方法移除自由不透明颜色并使模态视图透明 在下图中,即使显示了模态,最终结果也应该能够看到图像 基于此,您可以创建viewcontroller扩展并修改演示文稿。 以下是修改后的代码: struct ViewControllerHolder{ 弱var值:UIViewController? init(u值:UIViewController?){ 自我价值=价值 } } 结构ViewControllerKey:Environ

目前,我们为swiftUI modal提供了免费的不透明白/黑背景。是否仍有方法移除自由不透明颜色并使模态视图透明

在下图中,即使显示了模态,最终结果也应该能够看到图像

基于此,您可以创建
viewcontroller
扩展并修改演示文稿。 以下是修改后的代码:

struct ViewControllerHolder{
弱var值:UIViewController?
init(u值:UIViewController?){
自我价值=价值
}
}
结构ViewControllerKey:EnvironmentKey{
静态变量defaultValue:ViewControllerHolder{返回ViewControllerHolder(UIApplication.shared.windows.first?.rootViewController)}
}
扩展环境值{
var viewController:ViewControllerHolder{
获取{return self[ViewControllerKey.self]}
设置{self[ViewControllerKey.self]=newValue}
}
}
扩展UIViewController{
func present(presentationStyle:UIModalPresentationStyle=.automatic,transitionStyle:UIModalTransitionStyle=.coverVertical,动画:Bool=true,完成:@escaping()->Void={},@ViewBuilder:()->Content){
让toPresent=UIHostingController(rootView:AnyView(EmptyView()))
toPresent.modalPresentationStyle=presentationStyle
toPresent.rootView=AnyView(
建筑商()
.environment(\.viewController、ViewControllerHolder(toPresent))
)
toPresent.view.backgroundColor=.clear//此行已修改
self.present(toPresent,动画:动画,完成:完成)
}
}
您的SwiftUI内容视图:

struct ContentView:View{
@环境(\.viewController)私有变量viewControllerHolder:viewControllerHolder
私有变量viewController:UIViewController{
self.viewControllerHolder.value
}
var body:一些观点{
ZStack{
颜色:红色
按钮(操作:{
self.viewController?存在(生成器:{
文本(“确定”)
})
}) {
文本(“介绍我!”)
}
}
}
}

惊人的解决方案!谢谢,这正是我需要的。我在UIKit视图上实现了它,并以模态的方式展示了它,可以确认它在那里也可以工作。这似乎对我不起作用。iOS 14 beta 6。完全复制了代码。它显示模态,但背景为白色,不清晰。