当我在 swiftui 中无法使用约束时,如何管理此视图?

How can I manage this view when constraints aren't available to me in swiftui?

我是 SwiftUI 的新手,实际上已经掌握了使用 Z、V 和 HStacks 排列视图的窍门。但是事实证明,缺少中心锚点很难管理需要锚定到其他视图的不同锚点的视图;如以下情况:

蓝色的东西是弹出窗口,我使用以下代码将按钮的 centreY 锚点锚定到弹出视图的底部锚点:

popUpView.centerXAnchor.constraint(equalTo: view.centerXAnchor),
popUpView.topAnchor.constraint(equalTo: view.topAnchor, constant: 100),
popUpView.widthAnchor.constraint(equalTo: view.widthAnchor, multiplier: 0.8),
popUpView.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 0.45),

myButton.centerXAnchor.constraint(equalTo: popUpView.centerXAnchor),
myButton.centerYAnchor.constraint(equalTo: popUpView.bottomAnchor),
myButton.widthAnchor.constraint(equalTo:   popUpView.widthAnchor, multiplier: 0.285),
myButton.heightAnchor.constraint(equalTo:  popUpView.heightAnchor, multiplier: 0.2),

有什么方法可以在 SwiftUI 中使用堆栈来管理它吗?

如果您已经在 SwiftUI 中准备了这样的 popUpViewmyButton 组件,那么屏幕上的对齐实际上可以在两行中完成

struct ContentView: View {
    var body: some View {
        ZStack(alignment: .bottom) {    // << here !!
            PopUpView()
            MyButton()
                .alignmentGuide(.bottom) { [=10=].height / 2 } // << here !!
        }
    }
}

偏移量将取决于自定义按钮的高度(我以 20 为例)。

struct ContentView: View {
    var body: some View {
        VStack {
            PopUpView()
            MyButton()
                .offset(y: -20)
        }
    }
}