iOS:如何在没有 someView.addConstraints 的情况下使用 constraintsWithVisualFormat?
Posted
技术标签:
【中文标题】iOS:如何在没有 someView.addConstraints 的情况下使用 constraintsWithVisualFormat?【英文标题】:iOS: How to use constraintsWithVisualFormat without someView.addConstraints? 【发布时间】:2015-09-20 22:05:02 【问题描述】:我遇到了一个问题,我不知道如何在某些特定视图上使用旧函数 constraintsWithVisualFormat
而没有 addConstraints
函数。
头文件说:
此方法将在未来的版本中被弃用,应该 避免。而是使用 +[NSLayoutConstraint activateConstraints:]。
好的,我对类函数很好,但我在这里误解了什么吗?我正在用纯 AutoLayout
和 UIScrollView
(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))
这种方法不会在后台设置NSLayoutConstraint
的firstItem
或secondItem
吗?
我如何为这个例子模仿正确的 VF?
我知道如何使用新的锚语法创建相同的约束,但我很好奇将来如何使用 VFL!?
【问题讨论】:
【参考方案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]
是您的容器视图,|
是超级视图——它们是firstItem
和secondItem
。
【讨论】:
我会两次投票给| is the superview
。一直都不知道。非常感谢。
@vacawama 我知道如何使用activateConstraints
,但我的观点是我认为通过在特定视图上调用旧的addConstraints
函数将其添加到约束中。以上是关于iOS:如何在没有 someView.addConstraints 的情况下使用 constraintsWithVisualFormat?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS7 上更改没有动画的 barTintColor?