Comment animer la contrainte des changements?

Je suis à jour d'une ancienne application avec un AdBannerView et quand il n'y a pas d'annonce, il se glisse hors de l'écran. Quand il y a une annonce à ce qu'il glisse sur l'écran. Des trucs de base.

De style ancien, j'ai mis l'image dans un bloc d'animation.
Nouveau style, j'ai un IBOutlet à l'auto-contrainte de mise en page qui détermine la position Y, dans ce cas, c'est la distance à partir du bas de la superview, et de modifier la constante:

- (void)moveBannerOffScreen {
    [UIView animateWithDuration:5 animations:^{
        _addBannerDistanceFromBottomConstraint.constant = -32;
    }];
    bannerIsVisible = FALSE;
}

- (void)moveBannerOnScreen {
    [UIView animateWithDuration:5 animations:^{
        _addBannerDistanceFromBottomConstraint.constant = 0;
    }];
    bannerIsVisible = TRUE;
}

Et la bannière se déplace, exactement comme prévu, mais pas animation.

Mise à JOUR: j'ai re-regardé La WWDC 12 parler les Meilleures Pratiques pour la maîtrise de la Mise en page Automatique qui couvre l'animation. Il explique comment mettre à jour les contraintes à l'aide de CoreAnimation:

Comment animer la contrainte des changements?
Comment animer la contrainte des changements?

J'ai essayé avec le code suivant, mais obtenir exactement les mêmes résultats:

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

Sur une note de côté, j'ai vérifié de nombreuses fois et c'est en cours d'exécution sur le principal fil.

  • Je n'ai jamais vu autant de votes offert pour une question et une réponse sur une faute de frappe sur DONC, avant de
  • Si il y a une faute de frappe dans la réponse, vous devez modifier la réponse. C'est pourquoi ils sont modifiables.
  • Il serait plus utile si vous l'avez fait remarquer la faute de frappe, donc je savais où l'erreur a été. Vous pouvez modifier la réponse vous-même et fixe la typo de sauver tout le monde notre diatribe. Je n'ai juste le modifier pour supprimer la constante de l'animation de bloc, si c'est ce que vous faisiez référence à l'.
  • Je ne sais pas ce que la typo est. J'ai été de répondre aux commentaires ci-dessus.
  • Puis la typo est la question. Bêtement, j'ai été en tapant "setNeedsLayout" au lieu de "layoutIfNeeded". Il est clairement indiqué dans ma question, quand j'ai couper et coller mon code avec l'erreur et les captures d'écran avec le bon de commande. Encore n'arrivais pas à l'avis de til quelqu'un l'a fait remarquer.
InformationsquelleAutor DBD | 2012-09-27