'无法安装约束',原因是:'视图之间没有共同的超视图

时间:2016-07-15 06:16:12

标签: ios swift snapkit

import UIKit
import SnapKit

class RecordButton: UIView {
     let box = UIView()
     let container = UIView()

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        setup()
    }

    override init(frame: CGRect) {
        super.init(frame: frame)
        setup()
    }

    func setup() {
         container.snp_makeConstraints { (make) -> Void in
         make.width.equalTo(200)
         make.height.equalTo(200)
         make.center.equalTo(self.container)
         }
    box.snp_makeConstraints { (make) -> Void in
        make.top.equalTo(container).offset(50)
        make.left.equalTo(container).offset(50)
        make.bottom.equalTo(container).offset(-50)
        make.right.equalTo(container).offset(-50)
        make.center.equalTo(container)
    }
    self.addSubview(container)
    container.addSubview(box)
    setColor()

    }
    func setColor() {
         self.container.backgroundColor = UIColor.blackColor()
         self.box.backgroundColor = UIColor.orangeColor()
    }

}

为什么会出现此错误?有没有其他方法来执行此操作?有什么建议吗? centre.equalTo会创建此错误。我是swift并尝试实现SnapKit框架的新手

1 个答案:

答案 0 :(得分:2)

这意味着您的视图或任何控制器应该在同一视图中。 例如,有视图A有两个按钮,例如X和Y,视图B有两个按钮P和K,那么你可以设置P和K的约束,它不受视图A的影响而超出它的超视图B. / p>

如果有多个超级视图,请确保您已为每个超级视图提供了适当的约束。那么只会满足端点视图的约束。

<强> Uodate:

首先在容器和容器中添加框,然后设置约束。并确保您分别以self.containercontainercontainer viewbox view。如果您正在设置top,bottom,leading and trailing,那么也不需要设置中心!

希望这会有所帮助:)