Как установить множитель heightAnchor в SnapKit - swift - PullRequest
0 голосов
/ 30 сентября 2018

Я новое программирование 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 Ответ

0 голосов
/ 30 сентября 2018

Код в NSLayoutConstraint и код в SnapKit ограничения установки не одинаковы при отображении.

Вы знаете, что при установке cardViewInstance.mainCardView.topAnchor.constraint(equalTo: view.topAnchor, constant: marginOffset) его вид останется сверху, а отступ сверху каквы установили в marginOffset.и в SnapKit вы устанавливаете

make.top.equalTo(view) make.topMargin.equalTo(marginOffset)

Итак, это неправильно, потому что вы не можете установить top и topMargin одновременно, потому что это не похоже на то, что вы установили в NSLayoutConstraint

Поэтому, пожалуйста, исправьте это следующим образом (согласно документу):

make.top.equalTo(view).offset(marginOffset)

Для вас вопрос, как установить multiplier, вы можете достичь, объявив переменную что-то вроде view.frame.height / 2 и вы можете применить в вас SnapKit ограничение make.height.equalTo(view.frame.height / 5)

Вот как выглядит весь код

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)

    }

Надеюсь, что помощь: D

...