Как установить множитель heightAnchor в SnapKit - swift
Я новое программирование iOS. И мне действительно нравится эта библиотека установки ограничения моих взглядов. Но теперь я иду с сомнением, которое в NSLayoutConstraint
мы можем отрегулировать высоту с multiplier
нашего основного взгляда. Но я не знаю, как этого добиться в SnapKit.
Вот что NSLayoutConstraint
обеспечивает
NSLayoutConstraint.activate([
cardViewInstance.mainCardView.topAnchor.constraint(equalTo: view.topAnchor, constant: marginOffset),
cardViewInstance.mainCardView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20),
cardViewInstance.mainCardView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -20),
cardViewInstance.mainCardView.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 1/5)
])
Это то, что я сделал с SnapKit
cardViewInstance.mainCardView.snp.makeConstraints { (make) in
make.top.equalTo(view)
make.topMargin.equalTo(marginOffset)
make.leading.equalTo(self.view)
make.leadingMargin.equalTo(20)
make.trailing.equalTo(self.view)
make.trailingMargin.equalTo(-20)
}
Теперь я застрял для установки высоты как multiplier
основного вида.
1 ответ
Вы код в NSLayoutConstraint
и код в SnapKit
ограничения установки не одинаковы при отображении.
Вы знаете, когда вы установите cardViewInstance.mainCardView.topAnchor.constraint(equalTo: view.topAnchor, constant: marginOffset)
его вид останется сверху, а отступы сверху, как вы установили в marginOffset
, and in SnapKit you set
make.top.equalTo(view)
make.topMargin.equalTo(marginOffset)
So, this is wrong because you cannot set top
а также topMargin
at the same time because it not like what you have set in NSLayoutConstraint
So please correct that with something like (according to document):
make.top.equalTo(view).offset(marginOffset)
For you question how to set multiplier
you can achieve by declare a variable something like view.frame.height / 2
and you can apply in you SnapKit
ограничение make.height.equalTo(view.frame.height / 5)
This is how the whole code look likes
cardViewInstance.mainCardView.snp.makeConstraints { (make) in
make.top.equalTo(view).offset(marginOffset)
make.leading.equalTo(self.view).offset(20)
make.trailing.equalTo(self.view).offset(-20)
make.height.equalTo(view.frame.height / 5)
}
Hope that help:D