Jor*_*n H 15 animation objective-c uinavigationbar uiviewanimation ios
在我的应用程序中,我有一个页面视图控制器,允许用户在应用程序的不同"部分"之间滑动,并在导航栏的顶部我将标题文本更改为用户通过刷过的新部分pageViewController:didFinishAnimating:previousViewControllers:transitionCompleted:
.当动画完成时,它当前正在立即更改标题文本.我想通过一些动画改进这一点,一种微妙的淡入淡出效果.
我首先尝试实现[UIView animationWithDuration:...]
动画更改标题文本,但它不动画,只是仍然立即更新.
然后我想知道是否有可能更新导航栏标题的alpha,因为用户根据他们滚动的距离水平滚动,当下一部分即将出现在屏幕上时达到0 alpha,然后我可以立即在文本处于0时更改文本,然后快速淡入1 alpha.但是UIPageViewControllerDelegate
当滚动位置更新时,我没有看到调用方法.
如果可能的话,我不仅可以淡入淡出,而且可以在导航栏中移动标题文本位置,就像通过滑动手势从推送segue导航回来时发生的默认动画一样.当用户滚动并在另一侧提供下一部分标题时,我会将旧部分标题滑过,这样当转换完成时,前一部分标题不在屏幕上,新的标题完全居中,因此替换完成.但同样需要确切知道用户滚动页面视图控制器的程度.
是否可以实现任何所需的动画?
Ash*_*lls 46
如果要在不同的标题字符串之间设置动画,请使用以下命令:
CATransition *fadeTextAnimation = [CATransition animation];
fadeTextAnimation.duration = 0.5;
fadeTextAnimation.type = kCATransitionFade;
[self.navigationController.navigationBar.layer addAnimation: fadeTextAnimation forKey: @"fadeText"];
self.navigationItem.title = "My new title";
Run Code Online (Sandbox Code Playgroud)
当然,您可以调整持续时间并设置计时功能.
还有其他类型的动画可能在不同的情况下工作(感谢@inorganik):
kCATransitionFade
kCATransitionMoveIn
kCATransitionPush
kCATransitionReveal
Run Code Online (Sandbox Code Playgroud)
Fre*_*orf 37
为方便起见,Ashley Mills在Swift中的解决方案:
11/16/2016更新了Swift 3(感谢n13)
let fadeTextAnimation = CATransition()
fadeTextAnimation.duration = 0.5
fadeTextAnimation.type = .fade
navigationController?.navigationBar.layer.add(fadeTextAnimation, forKey: "fadeText")
navigationItem.title = "test 123"
Run Code Online (Sandbox Code Playgroud)
Swift 2.x
let fadeTextAnimation = CATransition()
fadeTextAnimation.duration = 0.5
fadeTextAnimation.type = kCATransitionFade
navigationController?.navigationBar.layer.add(fadeTextAnimat??ion, forKey: "fadeText")
navigationItem.title = "test 123"
Run Code Online (Sandbox Code Playgroud)
我把自己的帽子交给阿什利!
归档时间: |
|
查看次数: |
13553 次 |
最近记录: |