【问题标题】:iOS: How to use constraintsWithVisualFormat without someView.addConstraints?iOS:如何在没有 someView.addConstraints 的情况下使用 constraintsWithVisualFormat?
【发布时间】:2015-09-20 22:05:02
【问题描述】:

我遇到了一个问题,我不知道如何在某些特定视图上使用旧函数 constraintsWithVisualFormat 而没有 addConstraints 函数。

头文件说:

此方法将在未来的版本中被弃用,应该 避免。而是使用 +[NSLayoutConstraint activateConstraints:]。

好的,我对类函数很好,但我在这里误解了什么吗?我正在用纯 AutoLayoutUIScrollView (Technical Note) 解决我的问题。

所以我可以这样做,现在一切都会好起来的,但将来不会:

let views = ["containerView" : self.containerView]

self.scrollView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[containerView]|", options: NSLayoutFormatOptions(rawValue: 0), metrics: nil, views: views))
self.scrollView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[containerView]|", options: NSLayoutFormatOptions(rawValue: 0), metrics: nil, views: views))

这种方法不会在后台设置NSLayoutConstraintfirstItemsecondItem 吗?

我如何为这个例子模仿正确的 VF?

我知道如何使用新的锚语法创建相同的约束,但我很好奇将来如何使用 VFL!?

【问题讨论】:

    标签: ios swift uiscrollview autolayout


    【解决方案1】:

    constraintsWithVisualFormat 没有任何问题。标头只是建议您将self.scrollView.addConstraints(...) 替换为NSLayoutConstraint.activateConstraints(...)

    let views = ["containerView" : self.containerView]
    
    NSLayoutConstraint.activateConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[containerView]|", options: [], metrics: nil, views: views))
    NSLayoutConstraint.activateConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[containerView]|", options: [], metrics: nil, views: views))
    

    在底层[containerView] 是您的容器视图,| 是超级视图——它们是firstItemsecondItem

    【讨论】:

    • 我会两次投票给| is the superview。一直都不知道。非常感谢。
    • @vacawama 我知道如何使用activateConstraints,但我的观点是我认为通过在特定视图上调用旧的addConstraints 函数将其添加到约束中。
    猜你喜欢
    • 1970-01-01
    • 2021-10-30
    • 2020-04-20
    • 2019-11-15
    • 2013-06-30
    • 2015-08-09
    • 2018-08-21
    • 2017-06-11
    • 2017-12-02
    相关资源
    最近更新 更多