Как установить множитель 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

Другие вопросы по тегам