我的简单目标是淡出动画隐藏和显示功能。
Button.hidden = YES;
够简单的。然而,有可能让它淡出而不是消失吗?这样看起来相当不专业。
在 iOS 4 及更高版本中,有一种方法只需使用 UIView 转换方法即可实现此目的,而无需导入 QuartzCore。你可以直接说:
目标C
[UIView transitionWithView:button
duration:0.4
options:UIViewAnimationOptionTransitionCrossDissolve
animations:^{
button.hidden = YES;
}
completion:NULL];
Swift
UIView.transition(with: button, duration: 0.4,
options: .transitionCrossDissolve,
animations: {
self.button.isHidden = false
})
以前的解决方案
米歇尔的解决方案可行,但实际上并不是最好的方法。
Alpha 淡入淡出的问题是,有时不同的重叠视图层在淡出时看起来很奇怪。还有一些其他使用核心动画的替代方案。首先在您的应用程序中包含 QuartzCore 框架并添加#import <QuartzCore/QuartzCore.h>
到你的标题。现在您可以执行以下操作之一:
- set
button.layer.shouldRasterize = YES;
然后使用 Michail 在他的答案中提供的 alpha 动画代码。这将防止图层奇怪地混合,但会造成轻微的性能损失,并且如果按钮未在像素边界上精确对齐,则可能会使按钮看起来模糊。
或者:
-
使用以下代码来设置淡入淡出动画:
CATransition *animation = [CATransition 动画];
动画类型 = kCATransitionFade;
动画持续时间 = 0.4;
[button.layer addAnimation:animation forKey:nil];
按钮.隐藏=是;
这种方法的好处是,您可以交叉淡入淡出按钮的任何属性,即使它们不可设置动画(例如按钮的文本或图像),只需设置过渡,然后立即设置属性即可。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)