Строка, подобная этой
self.myTopContainer.heightAnchor.constraint(equalToConstant: 50).isActive = false
Каждый раз создает новое ограничение. Он не изменяет ранее созданное ограничение.
Когда вы настраиваетеAutolayout, вы должны сохранить ссылку на ограничения, которые вы хотите позже изменить, прежде чем вызывать NSLayoutConstraint.activate()
для них. Позже вы можете установить для isActive значение false для них.
Например:
var someConstraint: NSLayoutConstraint?
func setupAutoLayout(){
let aConstraint = myTopContainer.bottomAnchor.constraint(equalTo: myButton.topAnchor, constant: -5)
someConstraint = aConstraint
NSLayoutConstraint.activate([
// My Container
aConstraint
])
}
func editConstraint() {
self.someConstraint?.isActive = false
}
В любом случае, при редактировании ограничений будьте осторожны с журналами, вероятно, что-то может быть нарушено во время редактирования. Если вы видите эти журналы с нарушенным ограничением, это означает, что что-то все еще не так (даже если это выглядит визуально, это может привести к сбою или неправильной работе в другой ситуации)