我已经将我的登录视图控制器重写为 SwiftUI View
。该SignInView
被包裹在一UIHostingController
子类中(final class SignInViewController: UIHostingController<SignInView> {}
),并且被呈现模态,全屏,当符号是必要英寸
一切正常,除了我不知道如何SignInViewController
从SignInView
. 我试过添加:
@Environment(\.isPresented) var isPresented
Run Code Online (Sandbox Code Playgroud)
在SignInView
并将其分配给false
当登录成功,但这并没有出现与UIKit的互操作到。我怎样才能关闭视图?
我对SwiftUI框架还很陌生,还没有完全理解,所以请耐心等待。
当绑定更改时,是否可以从“另一个视图”内部触发“叠加视图”?参见下图:
我认为此“重叠视图”将包裹我的所有视图。我不确定如何执行此操作-也许可以使用ZIndex
。我还猜想,当绑定更改时,我需要某种回调,但是我也不知道该怎么做。
到目前为止,这是我得到的:
内容查看
struct ContentView : View {
@State private var liked: Bool = false
var body: some View {
VStack {
LikeButton(liked: $liked)
}
}
}
Run Code Online (Sandbox Code Playgroud)
Like按钮
struct LikeButton : View {
@Binding var liked: Bool
var body: some View {
Button(action: { self.toggleLiked() }) {
Image(systemName: liked ? "heart" : "heart.fill")
}
}
private func toggleLiked() {
self.liked = !self.liked
// NEED SOME SORT OF TOAST CALLBACK HERE
}
}
Run Code Online (Sandbox Code Playgroud)
我觉得我内部需要某种回调LikeButton
,但是我不确定在Swift中这一切如何工作。
任何帮助,将不胜感激。提前致谢!
我试图像Swift13中的iOS13中的Safari一样重新创建Modal:
看起来是这样的:
有谁知道这在SwiftUI中是否可行?我想显示一个小半模态,可以选择拖动到全屏模式,就像共享表一样。
任何建议深表感谢!
我怎样才能呈现一个将占据全屏并且不能通过向下滑动来消除的模式?目前我正在使用.sheet
一个视图来呈现一个可关闭的模式。
我没有注意到 Xcode 中的任何测试版更改会改变这种行为。
任何帮助,将不胜感激 :)
我正在制作一个应用程序,其中多个页面/视图嵌入到具有选项卡栏、菜单栏和标题的父视图中,如下所示:
HeaderView()
MenuView()
TabView(selection: $selected){
HomeView()
Page2View()
Page3View()
Page4View()
}
Run Code Online (Sandbox Code Playgroud)
当用户单击其中一页上的列表单元格时,我希望它能够横向打开详细信息视图,而不是作为垂直打开的工作表/模式打开,从而隐藏菜单栏、标题和选项卡栏。我已经尝试使用 FullScreenCover 来实现此目的,但它总是自下而上地呈现,而且我不知道如何从侧面呈现它。我也尝试过使用 NavigationLink,但是当我不希望显示标签栏、菜单栏和标题时,它会保留它们,并且我不知道如何使详细信息视图全屏显示。
您是否知道有什么方法可以使 FullsScreenCover 横向打开,或者让 NavigationLink 在另一个视图中填充整个屏幕?
我是在我的 SwiftUI 项目中显示模式的 fullScreenCover。
但是,我需要显示具有透明和模糊背景的模态。
但我似乎根本无法实现这一目标。
这是我的代码:
.fullScreenCover(isPresented: $isPresented) {
VStack(spacing: 20) {
Spacer()
.frame(maxWidth: .infinity, minHeight: 100)
.background(Color.black)
.opacity(0.3)
//Text("modal")
}
.background(SecondView()) // << helper !!
}
Run Code Online (Sandbox Code Playgroud)
我在同一个视图上有这个:
struct BackgroundBlurView: UIViewRepresentable {
func makeUIView(context: Context) -> UIView {
let view = UIVisualEffectView(effect: UIBlurEffect(style: .light))
DispatchQueue.main.async {
view.superview?.superview?.backgroundColor = .clear
}
return view
}
func updateUIView(_ uiView: UIView, context: Context) {}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码将打开全屏模式,但它根本不透明或模糊。
这就是我得到的:
我还需要做些什么吗?
参考我从哪里获得上述代码: