作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
这是我纠结了一段时间的一些代码。
如果启动淡入动画,标签文本也会淡入。如果我启动淡出动画,标签文本就会淡出。
当我启动 startFade
方法时,只显示淡出。在开始 fadeOut
方法之前,如何等待 fadeIn
方法可视化完成。
-(IBAction)startFade:(id)sender{
[self fadeIn];
[self fadeOut];
}
-(IBAction)fadeIn:(id)sender{
[self fadeIn];
}
-(IBAction)fadeOut:(id)sender{
[self fadeOut];
}
-(void) fadeIn{
[_label setAlpha:0];
[UILabel beginAnimations:NULL context:nil];
[UILabel setAnimationDuration:2.0];
[_label setAlpha:1];
[UILabel commitAnimations];
}
-(void) fadeOut{
[UILabel beginAnimations:NULL context:nil];
[UILabel setAnimationDuration:2.0];
[_label setAlpha:0];
[UILabel commitAnimations];
}
最佳答案
当您像现在一样连续调用 fadeIn
和 fadeOut
方法时,代码会立即运行,因此您只会看到上次的动画调用的方法。基于 UIView block 的动画提供了一个完成处理程序,这似乎正是您正在寻找的。所以你的代码可能看起来像这样:
-(IBAction)startFade:(id)sender {
[_label setAlpha:0.0f];
//fade in
[UIView animateWithDuration:2.0f animations:^{
[_label setAlpha:1.0f];
} completion:^(BOOL finished) {
//fade out
[UIView animateWithDuration:2.0f animations:^{
[_label setAlpha:0.0f];
} completion:nil];
}];
}
swift :
@IBAction func startFade(_ sender: AnyObject) {
label.alpha = 0.0
// fade in
UIView.animate(withDuration: 2.0, animations: {
label.alpha = 1.0
}) { (finished) in
// fade out
UIView.animate(withDuration: 2.0, animations: {
label.alpha = 0.0
})
}
}
关于ios - 淡入淡出动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20891614/
我是一名优秀的程序员,十分优秀!