gpt4 book ai didi

ios - 如何忽略 SwiftUI 模态背景,或使模态背景清晰/透明?

转载 作者:行者123 更新时间:2023-12-01 19:35:38 27 4
gpt4 key购买 nike

目前我们为 swiftUI modal 提供了一个免费的不透明的白色/黑色背景。无论如何要删除免费的不透明颜色并使模态视图透明?

在下图中,即使呈现模态,最终结果也应该能够看到图像。

enter image description here

最佳答案

基于此code snippet您可以创建 viewcontroller扩展和修改您的演示文稿。
这是修改后的代码:

 struct ViewControllerHolder {
weak var value: UIViewController?
init(_ value: UIViewController?) {
self.value = value
}
}

struct ViewControllerKey: EnvironmentKey {
static var defaultValue: ViewControllerHolder { return ViewControllerHolder(UIApplication.shared.windows.first?.rootViewController ) }
}

extension EnvironmentValues {
var viewController: ViewControllerHolder {
get { return self[ViewControllerKey.self] }
set { self[ViewControllerKey.self] = newValue }
}
}

extension UIViewController {
func present<Content: View>(presentationStyle: UIModalPresentationStyle = .automatic, transitionStyle: UIModalTransitionStyle = .coverVertical, animated: Bool = true, completion: @escaping () -> Void = {}, @ViewBuilder builder: () -> Content) {
let toPresent = UIHostingController(rootView: AnyView(EmptyView()))
toPresent.modalPresentationStyle = presentationStyle
toPresent.rootView = AnyView(
builder()
.environment(\.viewController, ViewControllerHolder(toPresent))
)

toPresent.view.backgroundColor = .clear // This line is modified
self.present(toPresent, animated: animated, completion: completion)
}
}


你的 SwiftUI 内容 View :

struct ContentView: View {

@Environment(\.viewController) private var viewControllerHolder: ViewControllerHolder
private var viewController: UIViewController? {
self.viewControllerHolder.value
}

var body: some View {
ZStack {
Color.red
Button(action: {
self.viewController?.present(builder: {
Text("OK")
})
}) {
Text("Present me!")
}
}
}
}

关于ios - 如何忽略 SwiftUI 模态背景,或使模态背景清晰/透明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60264777/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com