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

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: {
                 button.hidden = false
              })

以前的解决方案

米凯尔的解决方案会奏效,但实际上并不是最好的方法.

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;

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

Ios相关问答推荐

连接一些字符串,每个字符串都应该可以在swiftUI中单独点击

AlGolia InstantSearch Swift Package Manager引发编译错误

构建iOS项目失败.我们运行了";xcodeBuild";命令,但它退出并返回错误代码65-expo reaction ative

IOS:在UI线程中执行代码的闭包样式的替代

NSHashTable要求任何MyCustomProtocolAnyObject都是类类型

iOS 17-在Xcode 15中添加导航控制器时,导航栏不会立即显示

清除/删除 NavigationController 中的多个 ViewController

快速 keys 串更新只有在第二次try 时才起作用

Strange UIView.animate更改UIButton标题 colored颜色 的行为

Flutter动画放大图

如何以编程方式触发 SwiftUI DatePicker?

无法从 Xcode 获取模拟器列表.请打开 Xcode 并try 直接从那里运行项目以解决剩余问题

从 PHAssets 生成图像时,iOS 应用程序因内存问题而崩溃

iOS swift从另一个数组中删除一个数组的元素

如何使用 sendAsynchronousRequest:queue:completionHandler:

从 NSData 或 UIImage 中查找图像类型

是否可以在 iOS 9 上让您的 iPad 应用退出多任务处理?

如何使用 AFNetworking 设置超时

在 UITableViewController 中使用 UISearchDisplayController 时断言失败

Info.plist 实用程序错误:无法打开 Info.plist,因为没有这样的文件