Как мне анимировать изменения ограничений?

Я обновляю старое приложение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.

enter image description here enter image description here

Я пробовал использовать следующий код, но получаю те же самые результаты.

- (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;
}

Кстати, я проверял множество раз, и это выполняется в главном потоке.

Ответы на вопрос(13)

Ваш ответ на вопрос