ios - UIView 隐藏/显示动画

标签 ios objective-c uiviewanimation

我的简单目标是淡出动画隐藏和显示功能。

Button.hidden = YES;

足够简单。然而,有可能让它淡出而不是消失吗?这样看起来很不专业。

最佳答案

在 iOS 4 及更高版本中,有一种方法只需使用 UIView 转换方法即可实现此目的,而无需导入 QuartzCore。你可以直接说:

objective-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
              })

之前的解决方案

Michail 的解决方案可行,但实际上并不是最好的方法。

Alpha 淡入淡出的问题是,有时不同的重叠 View 层在淡出时看起来很奇怪。还有一些其他使用核心动画的替代方案。首先在您的应用程序中包含 QuartzCore 框架并添加 #import <QuartzCore/QuartzCore.h>到你的标题。现在您可以执行以下操作之一:

  1. 设置button.layer.shouldRasterize = YES;然后使用 Michail 在他的答案中提供的 alpha 动画代码。这将防止图层奇怪地混合,但会稍微降低性能,并且如果按钮未在像素边界上精确对齐,则可能会使按钮看起来模糊。

或者:

  • 使用以下代码来设置淡入淡出动画:

    CATransition *animation = [CATransition 动画]; 动画类型 = kCATransitionFade; 动画持续时间 = 0.4; [button.layer addAnimation:animation forKey:nil];

    button.hidden = YES;

  • 这种方法的好处是,即使按钮的任何属性不可设置动画(例如按钮的文本或图像),您也可以交叉淡入淡出,只需设置过渡,然后立即设置属性即可。

    关于ios - UIView 隐藏/显示动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50954225/

    相关文章:

    ios - 通过 Xcode/iOs 中的 View Controller 层次结构传递应用程序数据

    ios - 我如何将这个 objective-c 代码片段写入 Swift 中?

    objective-c - 我是否正在更新绑定(bind)到 NSTableView 的 NSArray?

    ios - swift 3 uiview animate 仅显示最后两个动画

    ios - Iphone 模拟器无法定位

    ios - 从另一个 NSDictionary 中提取一个 NSDictionary

    swift - 带有约束的 UIView 动画在 Swift 中不起作用

    iphone - iOS UIView block 动画停止实际动画

    ios - iOS中的自动布局向后兼容性

    ios - 带有无 xib View Controller 的 Monotouch Storyboard