锚点约束缩小超视图而不是放大子视图

时间:2017-01-16 08:58:45

标签: ios uiview nslayoutconstraint ios-autolayout layout-anchor

自定义视图位于IB中,方法是从库中拖动UIView对象,并将其类名设置为自定义视图类名。此自定义视图有一个子视图,该视图已添加到init?(coder aDecoder: NSCoder)

如何组合锚类型约束,以及它们应该位于何处,以便在自定义视图中集中设置_centralLabel子视图,并且它的尺寸是自定义视图尺寸的25%?

如果代码是这样写的:

override func updateConstraints() {
    if !_subviewsConstraintsAdded {
        _centralLabel.heightAnchor.constraint(equalTo: heightAnchor, multiplier: 0.25).isActive = true
        _centralLabel.widthAnchor.constraint(equalTo: widthAnchor, multiplier: 0.25).isActive = true
        _centralLabel.centerXAnchor.constraint(equalTo: centerXAnchor).isActive = true
        _centralLabel.centerYAnchor.constraint(equalTo: centerYAnchor).isActive = true
        _subviewsConstraintsAdded = true
    }
    super.updateConstraints()
}

代码的结果是,不是将_centralLabel的大小设置为自定义视图的25%,而是将自定义视图缩小为(0,0),这是_centralLabel的大小,而updateConstraints()是调用。

1 个答案:

答案 0 :(得分:0)

缺少的是:

filter()

应该在使用以下行编程实例化子视图后位于某处:

_centralLabel.translatesAutoresizingMaskIntoConstraints = false

在此修正之后,_centralLabel子视图已放大并移动到视图的中心,而视图本身保持其原始大小,形状和位置。