Как я могу управлять этим видом, когда ограничения не доступны для меня в swiftui? - PullRequest
1 голос
/ 26 апреля 2020

Я очень новичок в SwiftUI, и на самом деле я привык к тому, как упорядочивать свои представления, используя Z, V и HStacks. Но отсутствие центрального якоря затрудняет управление видами, которые необходимо привязать к различным якорям других видов; как в следующем случае:

Target UI Screenshot

Синяя вещь - это всплывающее окно, и я привязал привязку 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?

1 Ответ

1 голос
/ 26 апреля 2020

Если у вас уже есть такие popUpView и myButton компоненты, подготовленные в SwiftUI, выравнивание, как на экране, можно выполнить фактически в две строки

demo

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