我正在更新旧的应用程序,AdBannerView
当没有广告时,它会从屏幕上滑落.当有广告时,它会在屏幕上滑动.基本的东西.
旧样式,我在动画块中设置框架.新风格,我有一个IBOutlet
确定Y位置的约束,在这种情况下,它与superview底部的距离,并修改常量.
- (void)moveBannerOffScreen {
[UIView animateWithDuration:5 animations:^{
_addBannerDistanceFromBottomConstraint.constant = -32;
}];
bannerIsVisible = FALSE;
}
- (void)moveBannerOnScreen {
[UIView animateWithDuration:5 animations:^{
_addBannerDistanceFromBottomConstraint.constant = 0;
}];
bannerIsVisible = TRUE;
}
Run Code Online (Sandbox Code Playgroud)
横幅移动,完全符合预期,但没有动画.
更新:我重新观看了WWDC12视频" 掌握自动布局的最佳实践 ",其中包括动画.它讨论了如何使用更新约束AdBannerView
.
我尝试使用以下代码,但得到完全相同的结果.
- (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;
}
Run Code Online (Sandbox Code Playgroud)
在旁注中,我已经多次检查过,这是在主线程上执行的.
我试图View
通过使用以下代码更改应用程序启动时单独的位置viewDidLoad
:
let xPosition = dynView.frame.origin.x - 100
//View will slide view
let yPosition = dynView.frame.origin.y;
let height = dynView.frame.size.height
let width = dynView.frame.size.width
UIView.animate(withDuration: 1.0, animations: {
self.dynView.frame = CGRect(x: xPosition, y: yPosition, width: width, height: height)
})
Run Code Online (Sandbox Code Playgroud)
viewDidLoad
但是,如果我使用 a 分配给按钮,这似乎不能直接在代码中工作@IBAction
我猜我在这里遗漏了一些东西,但我不知道是什么。