如何在 Swift 中使用 SnapKit 使 UIView 具有相等的宽度和高度?

Posted

技术标签:

【中文标题】如何在 Swift 中使用 SnapKit 使 UIView 具有相等的宽度和高度?【英文标题】:how to make UIView with equal width and height with SnapKit in Swift? 【发布时间】:2016-10-26 08:50:00 【问题描述】:

我想在 Swift 中用 SnapKit 制作一个 UIView 矩形,像这样

lazy var customView: UIView = 
        let view = UIView(frame: CGRect())
        self.addSubview(view)
        view.snp.makeConstraints( (make) in
            make.left.top.bottom.equalToSuperview().inset(self.inset)
            make.width.equalTo(make.height)  // Error in this line
        )
        return view
    ()

【问题讨论】:

【参考方案1】:

你必须使用view.snp.height 而不是make.height

lazy var customView: UIView = 
    let view = UIView(frame: CGRect())
    self.addSubview(view)
    view.snp.makeConstraints( (make) in
        make.left.top.bottom.equalToSuperview().inset(self.inset)
        make.width.equalTo(view.snp.height) // <---
    )
    return view
()

【讨论】:

【参考方案2】:

如果您在同一个 superview 上有 2 个视图,您可以执行下一步:

    view1.snp.makeConstraints  (make) in
        make.leading.equalToSuperview()
        make.bottom.equalToSuperview()
        make.top.equalToSuperview()
    

    view2.snp.makeConstraints  (make) in
        make.trailing.equalToSuperview()
        make.bottom.equalToSuperview()
        make.top.equalToSuperview()
        make.leading.equalTo(view1.snp.trailing)
        make.width.equalTo(view1.snp.width)
    

结果

以同样的方式,使用view.snp.widthview.snp.height,您可以使用SnapKit

设置视图的相等性

【讨论】:

【参考方案3】:
    view.snp.makeConstraints( (make) in
        make.left.top.bottom.equalToSuperview().inset(self.inset)
        make.width.equalTo(view.snp.height) 
    )

【讨论】:

请补充说明

以上是关于如何在 Swift 中使用 SnapKit 使 UIView 具有相等的宽度和高度?的主要内容,如果未能解决你的问题,请参考以下文章

Swift SnapKit 动态高度问题

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

如何在 Objc 项目中使用 SnapKit?

如何在 Swift 中将 SnapKit ConstraintItem 转换为整数?

如何通过 swift 3 的 snapkit 向任何 UI 添加动画?

Swift Snapkit 看这篇基本就"够"了