ios - 动画导航栏标题文本更改

标签 ios objective-c animation uinavigationbar uiviewanimation

在我的应用程序中,我有一个页面 View Controller ,允许用户在应用程序的不同“部分”之间滑动,在导航栏的顶部,我将标题文本更改为用户滑动到的新部分通过 pageViewController:didFinishAnimating:previousViewControllers:transitionCompleted:。当动画完成时,它当前正在立即更改标题文本。我想通过一些动画来改善这一点,一种微妙的淡入淡出效果。

我首先尝试实现 [UIView animationWithDuration:...] 以动画更改标题文本,但它没有动画,只是仍然立即更新。

然后我想知道是否有可能在用户根据他们滚动的距离水平滚动时更新导航栏标题的 alpha,当下一部分即将出现在屏幕上时达到 0 alpha,然后我可以在文本为 0 时立即更改文本,然后快速淡入 1 alpha。但是我没有在 UIPageViewControllerDelegate 上看到滚动位置更新时调用的方法。

如果可能,我可以不只是淡入和淡出,而是淡入淡出并移动导航栏中的标题文本位置,就像通过滑动手势从推送转场导航回来时出现的默认动画一样。我会在用户滚动时将旧的部分标题滑过,并在另一侧提供下一个部分的标题,这样当转换完成时,上一个部分的标题不在屏幕上,而新的部分标题完全居中,这样替换就完成了。但这同样需要准确知道用户滚动页面 View Controller 的程度。

是否可以实现任何所需的动画?

最佳答案

如果您想在不同的标题字符串之间设置动画,请使用以下内容:

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";

当然,您可以调整持续时间并设置适合的计时功能。

还有其他类型的动画可能适用于不同的情况(感谢@inorganik):

kCATransitionFade
kCATransitionMoveIn
kCATransitionPush
kCATransitionReveal

关于ios - 动画导航栏标题文本更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24543702/

相关文章:

ios - 如何找出高能和cpu影响的原因?

java - Tween 引擎还是 Scene2d Action ?

javascript - 如何在普通 javascript 中为样式属性设置动画?

objective-c - 在 NSOutlineView 中托管 NSView 的图层

objective-c - MPMediaItem 和 iTunes Match

objective-c - 一个线程休眠时使用GCD的并发队列调度规则

ios - 运行动画后文本字段返回到原始位置

iphone - 您的 iPhone 应用程序可以收到新通知的通知吗?

iphone - 使用 Storyboard进行景观设计

ios - 时隙工作不正常