Я прочитал много вопросов, что состояние для того, чтобы анимировать изменения ограничений, мы просто нужно ...оживляющий Constraint Изменения в - (Недействительными) updateConstraints
self.someConstraint.constant = 0.f;
[UIView animateWithDuration:0.5f animations:^{
[self layoutIfNeeded];
}];
Недавно я прочитал, что пользовательский вид подклассы должны использовать метод -(void)updateConstraints
в UIView для выполнения обновлений ограничений в случае возникновения многих изменений свойств, которые могут привести к тому, что вы выполните вышеупомянутый блок кода в нескольких местах, что приведет к тому, что многие макеты не будут удалены.
UIView -(void)updateConstraints documentation
Я на самом деле нравится этот подход, при котором мы обновляем все ограничения. Некоторые просто код ...
- (void)updateConstraints
{
if(someCondition)
{
self.someConstraint.constant = 0.f;
}
//Maybe some other conditions or constant changes go
here based on the current state of your view.
[super updateConstraints];
}
На данный момент, мое первоначальное ограничение код анимации теперь только становится
[self setNeedsUpdateConstraints];
Единственная проблема с этим, я теперь потерял способность оживлять эти изменения ,
Я просмотрел документацию вида, чтобы найти способ анимации этих изменений в ограничениях, но я не могу найти подходящий метод для переопределения для вызова [self layoutIfNeeded]
в блоке анимации. Даже в этом случае, я считаю, что не нужно называть это потому, что макет будет выполнен, и я чувствую, что мне не нужно будет принудительно его править тогда и там.
Кто-нибудь знает, КАК вызвать эти изменения ограничений для оживления?