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
à la contrainte 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 d'animation.
Mise à JOUR: j'ai re-regardé WWDC12 vidéo "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
.
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 ce qui est exécuté sur le thread principal.