【问题标题】:Add multiplier to NSLayoutAnchor constraints in Swift在 Swift 中向 NSLayoutAnchor 约束添加乘数
【发布时间】:2020-11-12 11:43:43
【问题描述】:

锚约束简化了添加约束,但情节提要中可用的乘数属性似乎不适用于所有类型的约束。

例如,per the answer here,您可以在视图中将标签居中:

view.addSubview(loadingLabel)
loadingLabel.translatesAutoresizingMaskIntoConstraints = false 
loadingLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
loadingLabel.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true

但是,显然,虽然您可以设置长度约束的乘数,如下所示:

someView.heightAnchor.constraint(equalTo: heightAnchor, multiplier: 0.4)

您不能将类似的参数添加到 CenterX 或 CenterY 参数,可能是因为 Apple 认为这对于某个点没有意义,尽管您可以在 Storyboard 中以 discussed in this question 执行此操作。

为使点居中的约束添加一个乘数以使该点从顶部与屏幕大小成比例,最好的方法是什么?

【问题讨论】:

    标签: ios swift constraints nslayoutanchor


    【解决方案1】:

    您不能为 X 和 Y 轴约束的锚方法添加乘数,它们仅适用于维度锚。但是,NSLayoutContraint 有一个设置乘数的选项。例如,如果您想将标签设置在沿 Y 轴的超级视图的顶部和中心的中间,您可以这样做:

    view.addSubview(loadingLabel)
    loadingLabel.translatesAutoresizingMaskIntoConstraints = false 
    loadingLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
    NSLayoutConstraint(item: loadingLabel, attribute: .centerY, relatedBy: .equal, toItem: view, attribute: .centerY, multiplier: 0.5, constant: 0).isActive = true
    

    【讨论】:

    • 完美运行。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2015-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-17
    相关资源
    最近更新 更多