iphone - 有没有其他方法可以使用动画 block 来执行此动画?

标签 iphone objective-c ios ipad animation

我目前正在通过执行以下操作来执行 curl 动画:

CATransition *animation = [CATransition animation];
animation.type = @"pageCurl";
animation.subtype = kCATransitionFromTop;
animation.fillMode = kCAFillModeForwards;
animation.duration = 1;
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
[[self.view.window layer] addAnimation:animation forKey:nil];

此动画将简单地执行一个卷页动画,但最后您看到的是与开始时相同的 View 。从未发生真正的转变。

现在使用动画 block 我知道你可以做一些事情来达到以下效果:

[UIView transitionFromView:self.view
                    toView:aNewView    // a view to transition to
                  duration:1 
                   options:UIViewAnimationTransitionCurlUp|UIViewAnimationOptionCurveEaseIn
                completion:NULL];

但是,使用动画 block 您将过渡到一个新 View aNewView,这与上面重用相同 View 的 CATransition 动画不同(从未发生真正的过渡)。动画 block 的问题在于,您必须实际创建新 View 才能过渡到该 View ,在我的情况下这很麻烦,因为 View 相当复杂,我不想创建 UIView 子类。

有没有办法使用动画 block 执行上述 CATransition 动画,同时绕过必须重建 View 或创建自定义子类的困难?

最佳答案

好的 - 所以我为任何感兴趣的人弄清楚了。其实 super 简单。您可以简单地使用方法:transitionWithView:duration:options:animations:completion:

例如:

[UIView transitionWithView:self.view
                  duration:1
                   options:UIViewAnimationOptionTransitionCurlUp|UIViewAnimationCurveEaseIn
                animations:^{ // do anything you want here } 
                completion:NULL];

就是这样。这将显示返回同一 View 的过渡动画。您可以在动画 block 中对新 View 进行任何更改(可能显示一些新文本,等等...)。

我希望这能帮助到线下的人......

关于iphone - 有没有其他方法可以使用动画 block 来执行此动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9388215/

相关文章:

ios - 如果应用程序正在运行并且配置文件显示 "Invalid Status"会发生什么?

ios - 使用 swift 在 webview 页面中查找文本?

iphone - 如何为iPhone开发图像扫描仪(文本识别器)

ios连续web服务调用

iphone - IOS Swift - 在 iphone 5s 中运行时窗口尺寸缩小

iphone - 如何将 unsigned int 转换为 NSString?

ios - 如何在任何 Facebook 帐户上分享图像?

objective-c - 需要急救人员解释

ios - UITableview 显示 NSMutableArray 中的重复对象

ios - 来自 UITableView 的 View 消失