swift - 如何在 SnapKit 中快速设置 heightAnchor 的倍数 - swift

标签 swift autolayout nslayoutconstraint snapkit

我是一名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)


    }

现在我被困在将高度设置为主视图的乘数

最佳答案

您在 NSLayoutConstraint 中编码和代码 SnapKit显示时设置的约束不一样。

当你设置cardViewInstance.mainCardView.topAnchor.constraint(equalTo: view.topAnchor, constant: marginOffset)时你就知道了它的 View 将保持在顶部并从顶部填充,正如您在 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

关于swift - 如何在 SnapKit 中快速设置 heightAnchor 的倍数 - swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52578796/

相关文章:

swift - 添加多个 UI 元素并一起约束

swift - 使用函数停用 viewdidload 中声明的 nslayoutconstraint

ios - 如何更改 "Sign In with Apple"按钮的宽度?

protocols - 如何在 ObjC 框架中使用 Swift 协议(protocol)

ios - 如何将不相关的数组添加到 iOS-charts 折线图中的数据点标签?

swift - 向 UINavigationBar 添加 subview 时将 UITableView 向下推

ios - 简单地使用 Storyboard,约束来设置 UICollectionView 中的单元格大小

ios - 想要将一些代码应用到同一个 Storyboard 上的第二个场景(Xcode、Swift 2)

inheritance - 协议(protocol)类型对象的 Swift 数组

ios - ScrollView 不会在 Swift 中使用 AutoLayout 垂直滚动内容