最佳答案
我正在用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;}
横幅移动,正如预期的那样,但不动画。
更新:我重新观看了涵盖动画的WWDC 12演讲掌握自动布局的最佳实践。它讨论了如何使用核心动画更新约束:
我尝试了以下代码,但得到了完全相同的结果:
- (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;}
顺便说一句,我已经检查了很多次,这是在主要线程上执行的。