Jak*_*oni 5 iphone animation objective-c ipad ios
我目前正在通过执行以下操作来执行卷曲动画:
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];
Run Code Online (Sandbox Code Playgroud)
此动画将简单地执行页面卷曲动画,但最终您会看到与开始时相同的视图。从未发生过真正的转变。
现在使用动画块我知道你可以做一些事情来达到以下效果:
[UIView transitionFromView:self.view
toView:aNewView // a view to transition to
duration:1
options:UIViewAnimationTransitionCurlUp|UIViewAnimationOptionCurveEaseIn
completion:NULL];
Run Code Online (Sandbox Code Playgroud)
但是,使用动画块您正在过渡到一个新视图,aNewView
这与上面的 CATransition 动画不同,后者重用相同的视图(从未发生真正的过渡)。动画块的问题在于您必须实际创建要转换的新视图,在我的情况下这很麻烦,因为视图相当复杂,我宁愿不创建 UIView 子类。
有没有办法使用动画块执行上述 CATransition 动画,同时解决必须重建视图或创建自定义子类的困难?
好的 - 所以我为任何感兴趣的人找到了答案。其实非常简单。您可以简单地使用以下方法:transitionWithView:duration:options:animations:completion:
例如:
[UIView transitionWithView:self.view
duration:1
options:UIViewAnimationOptionTransitionCurlUp|UIViewAnimationCurveEaseIn
animations:^{ // do anything you want here }
completion:NULL];
Run Code Online (Sandbox Code Playgroud)
就是这样。这将显示返回同一视图的过渡动画。您可以在动画块中对新视图进行任何所需的更改(可能显示一些新文本,无论如何......)。
我希望这可以帮助某人走出困境......