/ / Як перевірити, чи анімує NSLayoutConstraint - ios, object-c, cocoa-touch, core-animation, nslayoutconstraint

Як перевірити, чи анімується NSLayoutConstraint - ios, object-c, cocoa-touch, core-animation, nslayoutconstraint

Я створюю власний підклас NSLayoutConstraint, і мені потрібно знати, чи обмеження макета "s" constant В даний час властивість анімується для внутрішньої обробки стану. Іншими словами, мені потрібно розрізняти:

{ //no animation
myLayoutConstraint.constant = 100;
}

і

{ //animated
myLayoutConstraint.constant = 100;
[UIView animateWithDuration:0.2 animations:^{
[self.myViewThatHasTheConstraintAttached layoutIfNeeded];

} completion:^(BOOL finished) {
[...]
}];
}

Так що я можу обробляти кутові кейси для отримання повідомлення в середині анімації. Чи можливо це?

Відповіді:

1 для відповіді № 1

Єдиний спосіб зробити це - мати логічну форму скрізь, де ви хочете отримати доступ до цього, і зробити щось на зразок ...

{ //no animation
theView.animatingChange = NO;
myLayoutConstraint.constant = 100;
}

{ //animated
theView.animatingChange = YES;
myLayoutConstraint.constant = 100;
[UIView animateWithDuration:0.2 animations:^{
[self.myViewThatHasTheConstraintAttached layoutIfNeeded];

} completion:^(BOOL finished) {
[...]
theView.animatingChange = NO;
}];
}

Властивість у поданні негайно змінюється на"кінцеве" значення анімації. Під час анімації він не змінюється на всі проміжні значення. Просто анімований малюнок на екрані.