如何使用自动布局

时间:2017-11-29 00:05:22

标签: swift uiview autolayout

我基于xib文件创建了一个自定义UIView,并添加了一些带有约束的UIVIews。

在我的View Controller中,我添加了一个UIView并将该类设置为我的自定义视图。到现在为止还挺好。我的自定义视图显示正确。

但是现在我有一个@IBInspectable(numerOfButtons:Int)并且根据这个数字,我想以编程方式将UIButtons添加到我的自定义视图中。 我的问题是,我想在自定义视图中将此按钮与子视图对齐。所以我尝试以编程方式设置我的按钮帧。但是当我在layoutSubviews()中执行此操作时,我的子视图不会根据我的自动布局约束进行计算。我试图调用我的子视图的setNeedsLayout()和layoutIfNeeded(),但这不起作用。

如何在layoutSubviews()

中获取我的子视图的正确帧(计算我的约束)以使用它们

或者我错了什么?

顺便说一下。似乎只有当我尝试使用iPad Pro 9.7英寸模拟器运行时,我的方法才有效?!

1 个答案:

答案 0 :(得分:0)

以编程方式设置约束将是一件耗时的事情,但幸运的是我们有一个替代解决方案,这个library非常容易设置约束

    let box = UIView()
    self.view.addSubview(box)
    box.snp.makeConstraints { (make) -> Void in
       make.width.height.equalTo(50)
       make.center.equalTo(self.view)
    }

希望这会对你有所帮助