在iPhone上制作视图过渡动画的最佳实践是什么?

例如,来自苹果的ViewTransitions个示例项目使用如下代码:

CATransition *applicationLoadViewIn = [CATransition animation];
[applicationLoadViewIn setDuration:1];
[applicationLoadViewIn setType:kCATransitionReveal];
[applicationLoadViewIn setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];
[[myview layer] addAnimation:applicationLoadViewIn forKey:kCATransitionReveal];

但也有一些代码片段漂浮在网上,看起来像这样:

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.75];
[UIView setAnimationDelegate:self];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:myview cache:YES];
[myview removeFromSuperview];
[UIView commitAnimations];

最好的方法是什么?如果您也能提供一个片段,我们将不胜感激.

我一直无法让第二种方法正常工作.

推荐答案

在关于beginAnimations:context:方法的UIView reference节中:

iPhone OS 4.0及更高版本不鼓励使用这种方法.您应该改用基于块的动画方法.

Eg of Block-based Animation based on Tom's Comment

[UIView transitionWithView:mysuperview 
                  duration:0.75
                   options:UIViewAnimationTransitionFlipFromRight
                animations:^{ 
                    [myview removeFromSuperview]; 
                } 
                completion:nil];

Ios相关问答推荐

如何在进行滑动删除操作时保持自定义视图背景静态

SwiftUI文本编辑器内部滚动填充,无需文本裁剪

当操作修改查看条件时,按钮不重复

如何在iOS 17 SwiftUI中获取用户名

iphone 11 和 iphone 12 对于相同的布局显示不同的结果

如何在后台显示 Swift UI 中的通讯通知?

如何在@AppStorage中存储字体?

Swift locationManager.requestWhenInUseAuthorization() 不提示用户

如何为 Firebase Auth 实施 Firebase AppCheck?

NumberFormatter 无法使用 Xcode 15.0 beta 正确识别 iOS 17 beta 中的 Locale 货币设置

当 Swift 枚举具有 any existential 作为其关联值之一时,我如何使它符合 `Equatable`?

SwiftUI 文本字段代理绑定代码忽略空格不起作用?

UICollectionView - 水平滚动,水平布局?

Swift 错误:在其自己的初始值中使用的变量

无法验证客户端 3000

如何判断是否为 64 位构建了静态库?

从 NSUserDefaults 字典 iOS 中删除所有键

使用 Chrome DevTools 调试 iOS 6+7 Mobile Safari

我可以通过 UIAppearance 代理设置哪些属性?

UISegmentedControl 以编程方式更改段数