Как мне анимировать изменения ограничений?
Я обновляю старое приложениеAdBannerView
и когда нет рекламы, она соскальзывает с экрана. Когда есть реклама, она скользит по экрану. Основные вещи.
По старому стилю я установил кадр в анимационном блоке.
Новый стиль, у меня естьIBOutlet
к ограничению, которое определяет позицию Y, в этом случае это расстояние от нижней части суперпредставления и модифицируют константу.
- (void)moveBannerOffScreen {
[UIView animateWithDuration:5
animations:^{
_addBannerDistanceFromBottomConstraint.constant = -32;
}];
bannerIsVisible = FALSE;
}
- (void)moveBannerOnScreen {
[UIView animateWithDuration:5
animations:^{
_addBannerDistanceFromBottomConstraint.constant = 0;
}];
bannerIsVisible = TRUE;
}
И баннер движется именно так, как и ожидалось, но без анимации.
UPDATE: Я повторно посмотрел видео WWDC12 & quot;Лучшие практики для освоения автоматического макета& Quot; который охватывает анимацию. Здесь обсуждается, как обновить ограничения с помощьюCoreAnimation
.
Я пробовал использовать следующий код, но получаю те же самые результаты.
- (void)moveBannerOffScreen {
_addBannerDistanceFromBottomConstraint.constant = -32;
[UIView animateWithDuration:2
animations:^{
[self.view setNeedsLayout];
}];
bannerIsVisible = FALSE;
}
- (void)moveBannerOnScreen {
_addBannerDistanceFromBottomConstraint.constant = 0;
[UIView animateWithDuration:2
animations:^{
[self.view setNeedsLayout];
}];
bannerIsVisible = TRUE;
}
Кстати, я проверял множество раз, и это выполняется в главном потоке.