如何解决UIView 隐藏/显示动画?
在 iOS 4 及更高版本中,有一种方法可以做到这一点,只需使用 UIView 过渡方法,而无需导入 QuartzCore。你可以说:
目标 C
[UIView transitionWithView:button
duration:0.4
options:UIViewAnimationoptionTransitionCrossdissolve
animations:^{
button.hidden = YES;
}
completion:NULL];
迅速
UIView.transition(with: button, duration: 0.4,
options: .transitionCrossdissolve,
animations: {
button.hidden = false
})
以前的解决方案
Michail 的解决方案会起作用,但它实际上并不是最好的方法。
Alpha 渐变的问题在于,有时不同的重叠视图层在淡出时看起来很奇怪。还有其他一些使用核心动画的替代方案。首先在您的应用程序中包含 QuartzCore
框架并添加#import <QuartzCore/QuartzCore.h>
到您的标题中。现在您可以执行以下操作之一:
1)设置button.layer.shouldRasterize = YES;
然后使用 Michail 在他的答案中提供的 alpha
动画代码。这将防止图层奇怪地混合,但会带来轻微的性能损失,并且如果按钮未在像素边界上精确对齐,则可能会使按钮看起来模糊。
或者:
2) 使用以下代码为淡入淡出动画:
CATransition *animation = [CATransition animation];
animation.type = kCATransitionFade;
animation.duration = 0.4;
[button.layer addAnimation:animation forKey:nil];
button.hidden = YES;
这种方法的好处是您可以交叉淡化按钮的任何属性,即使它们不是可动画的(例如按钮的文本或图像),只需设置过渡,然后立即设置属性。
解决方法
我的简单目标是淡化动画隐藏和显示功能。
Button.hidden = YES;
很简单。但是,是否有可能让它消失而不仅仅是消失?那样看起来就很不专业。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。