我遇到这种情况:
我想要这个:
黑色视图位于紫色视图之间的X距离处,如果我在紫色视图中点击I按钮,紫色视图的高度会减小(或增加),我希望黑色视图处于相同的X距离之间紫色视图。 出于这个原因,我写了这段代码:
对于增加或减少紫罗兰色视图的按钮事件,我使用此方法:
@IBAction func tapOpenButton(){
self.altezza.constant = self.altezza.constant + 20
}
@IBAction func tapCloseButton(){
self.altezza.constant = self.altezza.constant - 20
}
其中altezza
是NSLayoutConstraint
两个视图都在滚动视图中,我以这种方式通过代码设置约束:
var newView = blackView
var view = violetView
let horizontalConstraint = NSLayoutConstraint(item: newView, attribute: NSLayoutAttribute.centerX, relatedBy: NSLayoutRelation.equal, toItem: view, attribute: NSLayoutAttribute.centerX, multiplier: 1, constant: 0)
let verticalConstraint = NSLayoutConstraint(item: newView, attribute: NSLayoutAttribute.centerY, relatedBy: NSLayoutRelation.equal, toItem: view, attribute: NSLayoutAttribute.centerY, multiplier: 1, constant: 120)
let widthConstraint = NSLayoutConstraint(item: newView, attribute: NSLayoutAttribute.width, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: 100)
let heightConstraint = NSLayoutConstraint(item: newView, attribute: NSLayoutAttribute.height, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: 100)
self.altra.addConstraints([horizontalConstraint,verticalConstraint, widthConstraint, heightConstraint])
altra
是滚动视图,其中两个视图都是
我的问题是当我减少或增加紫罗兰色的高度时,紫色视图和黑色视图之间的距离是不一样的,特别是,例如,当我增加紫色视图的高度时,紫罗兰色的视图在黑色视图下。 我是代码自动布局的新手。 你能救我吗?
答案 0 :(得分:0)
检查这是否可以代替你的heightConstaint
let heightConstraint = NSLayoutConstraint(item: newView, attribute: NSLayoutAttribute.height, relatedBy: NSLayoutRelation.equal, toItem: view, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: 100)
答案 1 :(得分:0)
不是通过centerY
固定视图,而是将黑色视图的顶部设置为带有边距的紫色视图的底部。
let verticalConstraint = NSLayoutConstraint(item: newView, attribute: NSLayoutAttribute.top, relatedBy: NSLayoutRelation.equal, toItem: view, attribute: NSLayoutAttribute.bottom, multiplier: 1, constant: 10)