У меня есть контейнер результатов, который пользователь может затратить и списать. Я хотел бы удалить ограничение и добавить новый. Нажатие на нее отлично работает, но щелкнув второй раз (т.е. установка newConstraint.active = false и resultTopConstraint = true приводит к сбою). У меня есть следующий:может быть активирована NSLayoutConstraint?
@IBAction func toggleResultContainer(sender: AnyObject) {
isResultsOpen = !isResultsOpen
//resultTopConstraint.constant = isResultsOpen ? -300.0 : 0.0
self.view.sendSubviewToBack(searchView)
let newConstraint = NSLayoutConstraint(
item: resultsContainer,
attribute: .Top,
relatedBy: .Equal,
toItem: resultsContainer.superview!,
attribute: .Top,
multiplier: 1.0,
constant: 30.0
)
if(isResultsOpen){
resultTopConstraint.active = false
newConstraint.active = true
}else{
resultTopConstraint.active = true
newConstraint.active = false
}
UIView.animateWithDuration(1.0, delay: 0.0, usingSpringWithDamping: 0.4, initialSpringVelocity: 10.0, options: .CurveEaseIn, animations: {
self.view.layoutIfNeeded()
}, completion: nil)
и получить Unable to simultaneously satisfy constraints.
В случае, если код выше работа, и это действительно одновременно удовлетворить вопрос ограничения? Я попытался установить ограничение
@IBOutlet var resultTopConstraint: NSLayoutConstraint!
как к weak
strong
и (в https://stackoverflow.com/a/28717185/152825), но, кажется, не имеют эффекта.
THX - это не похоже, чтобы сделать это (но большое предложение). У меня сильное чувство, что это действительный конфликт ограничений. Я не настолько опытен с автозапуском, поэтому, наверное, что-то не так. – timpone
Только что обновил мой ответ с другим предложением, скажите, если это работает – Hazneliel
Я думаю, что работает! Я должен был поместить их в массив, например 'NSLayoutConstraint.deactivateConstraints ([resultTopConstraint])'. thx – timpone