Ich aktualisiere eine alte Anwendung mit einer AdBannerView
und wenn es keine Werbung gibt, wird sie ausgeblendet. Wenn eine Anzeige vorhanden ist, wird sie auf den Bildschirm geschoben. Grundlegende Dinge.
Im alten Stil habe ich den Rahmen in einen Animationsblock gesetzt. Neuer Stil, ich habe eine IBOutlet
zur Auto-Layout-Beschränkung, die die Y
Position, in diesem Fall den Abstand vom unteren Rand der Superview, und ändern Sie die Konstante:
- (void)moveBannerOffScreen {
[UIView animateWithDuration:5 animations:^{
_addBannerDistanceFromBottomConstraint.constant = -32;
}];
bannerIsVisible = FALSE;
}
- (void)moveBannerOnScreen {
[UIView animateWithDuration:5 animations:^{
_addBannerDistanceFromBottomConstraint.constant = 0;
}];
bannerIsVisible = TRUE;
}
Und das Banner bewegt sich, genau wie erwartet, aber keine Animation.
UPDATE: Ich habe mir die WWDC 12-Talk Best Practices für die Beherrschung des automatischen Layouts die sich mit Animation befasst. Es wird erörtert, wie man Beschränkungen mit CoreAnimation :
Ich habe es mit dem folgenden Code versucht, erhalte aber genau die gleichen Ergebnisse:
- (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;
}
Nebenbei bemerkt, ich habe das mehrfach überprüft und es wird auf dem メイン Thema.