如何在 SnapKit 中设置 heightAnchor 的乘数 - swift

Posted

技术标签:

【中文标题】如何在 SnapKit 中设置 heightAnchor 的乘数 - swift【英文标题】:How to set Multiplier of heightAnchor in SnapKit - swift 【发布时间】:2018-09-30 14:27:25 【问题描述】:

我是一个新的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 中设置的那样。并在 SnapKit 中设置

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

所以,这是错误的,因为您不能同时设置 toptopMargin,因为它不像您在 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

【讨论】:

make.height.equalTo(view.frame.height / 5) 语法应该改进为make.height.equalTo(view).multipliedBy(0.2)

以上是关于如何在 SnapKit 中设置 heightAnchor 的乘数 - swift的主要内容,如果未能解决你的问题,请参考以下文章

使用 Snapkit 的自定义视图在使用时不显示

如何在 Netbeans 中设置环境变量?

如何在 Android 中设置 libsvm?

如何在 Laravel 中设置全局变量?

如何在代码中设置绑定?

如何在协议扩展中设置委托