我在故事板中创建了很多视图,但我希望他们能够动态更新其约束,而不必每次都使用IBOutlet。
我首先为我想要更新的视图的超视图创建一个自定义类,然后像这样更改其子视图的底部约束:
myView.constraints.filter{ $0.firstAnchor is NSLayoutAttribute.bottom }.constant -= 200
' NSLayoutAttribute.bottom'似乎不是检查Anchor类型的正确方法。
如何检查我想要更改的约束类型?
我是否更正了我想要更改的视图的超级视图中的约束,而不是视图本身?
答案 0 :(得分:0)
NSLayoutConstraint
有一个名为identifier
的属性,您可以通过代码或IB来设置此属性。
在那之后获得你正在寻找的约束只是在特定视图中搜索它的问题。
考虑这个UIView
扩展名:
func constraint(withIdentifier:String) -> NSLayoutConstraint? {
return constraints.filter{ $0.identifier == withIdentifier }.first
}
答案 1 :(得分:0)
根据dahlia_boy的建议,我使用UIView.animate来实现此功能,但它似乎并不是永久性的:
translatesAutoresizingMaskIntoConstraints = true
UIView.animate(withDuration: 1, animations: {
self.frame.size.height -= 200
})