gpt4 book ai didi

ios - 如何在 UINavigationItem titleView 中创建淡入/淡出动画?

转载 作者:行者123 更新时间:2023-11-30 13:48:34 25 4
gpt4 key购买 nike

我想创建像 iOS 音乐应用程序一样的 titleView 动画!在 iOS 音乐应用程序中,您可以看到很酷的动画。当您从“我的音乐”中选择艺术家或专辑(例如),然后将它们滚动到向上时,您可以看到 UINavigationBar 上出现淡入动画,并且当您返回到原始位置时也会消失!

最佳答案

您可以使用 UIView.transitionWithView 来做动画。在本例中,将单词 ipsum 淡入绿色:

let rangeOfText = (textViewForPlayer.text as NSString).rangeOfString("ipsum", options: nil)
let stringForPlayer = textViewForPlayer.attributedText.mutableCopy() as NSMutableAttributedString

UIView.transitionWithView(self.textViewForPlayer, duration: 1.0, options: .TransitionCrossDissolve, animations: { () -> Void in
stringForPlayer.addAttribute(
NSForegroundColorAttributeName,
value: UIColor.greenColor(),
range: rangeOfText)
self.textViewForPlayer.attributedText = stringForPlayer
}, completion: nil)

您可以使用 UIView.transitionWithView 来做动画。在本例中,将单词 ipsum 淡入绿色:

let rangeOfText = (textViewForPlayer.text as NSString).rangeOfString("ipsum", options: nil)
let stringForPlayer = textViewForPlayer.attributedText.mutableCopy() as NSMutableAttributedString

UIView.transitionWithView(self.textViewForPlayer, duration: 1.0, options: .TransitionCrossDissolve, animations: { () -> Void in
stringForPlayer.addAttribute(
NSForegroundColorAttributeName,
value: UIColor.greenColor(),
range: rangeOfText)
self.textViewForPlayer.attributedText = stringForPlayer
}, completion: nil)

如您所见,这非常简单。

在这个动画期间让文本收缩和增长是一个完全不同的蜡球,因为简单地尝试改变文本的大小将导致 TextView 的其余部分被重新布局,我确信这不是你的意图。

在这种情况下,我可能会拍摄 TextView 该部分的快照,将该快照放在 TextView 上,以动画方式调整大小和转换。所有这些都假设您在动画结束时将其转换为与之前完全相同的大小(否则您会遇到一个复杂的问题:在动画期间如何处理其余文本)。

要实现特定的动画需要大量工作。我想问您是否可以通过其他方式更简单地实现所需的效果(例如嵌套动画,将文本颜色淡化为清晰,然后将其淡化为新颜色,使其实现一点“消失和重新出现”的感觉) 。这使得转变更加引人注目,同时又不会迷失在动画代码的老鼠巢中。

您可以使用 UIView.transitionWithView 来做动画。在本例中,将单词 ipsum 淡入绿色:

let rangeOfText = (textViewForPlayer.text as NSString).rangeOfString("ipsum", options: nil)

let stringForPlayer = textViewForPlayer.attributedText.mutableCopy() as NSMutableAttributedString


UIView.transitionWithView(self.textViewForPlayer, duration: 1.0, options: .TransitionCrossDissolve, animations:
{ () -> Void in
stringForPlayer.addAttribute(
NSForegroundColorAttributeName,

value: UIColor.greenColor(),

range: rangeOfText)
self.textViewForPlayer.attributedText = stringForPlayer
}, completion: nil)

如您所见,这非常简单。

在这个动画期间让文本收缩和增长是一个完全不同的蜡球,因为简单地尝试改变文本的大小将导致 TextView 的其余部分被重新布局,我确信这不是你的意图。

在这种情况下,我可能会拍摄 TextView 该部分的快照,将该快照放在 TextView 上,以动画方式调整大小和转换。所有这些都假设您在动画结束时将其转换为与之前完全相同的大小(否则您会遇到一个复杂的问题:在动画期间如何处理其余文本)。

要实现特定的动画需要大量工作。我想问您是否可以通过其他方式更简单地实现所需的效果(例如嵌套动画,将文本颜色淡化为清晰,然后将其淡化为新颜色,使其实现一点“消失和重新出现”的感觉) 。这使得转变更加引人注目,同时又不会迷失在动画代码的老鼠巢中。

如果您想在淡入淡出为所需颜色之前将其淡入为clearColor(使其更加“流行”),您可以使用完成 block :

UIView.transitionWithView(self.textViewForPlayer, duration: 0.25, options: 
.TransitionCrossDissolve, animations: { () -> Void in

stringForPlayer.addAttribute(

NSForegroundColorAttributeName,

value: UIColor.clearColor(),

range: rangeOfText)

self.textViewForPlayer.attributedText = stringForPlayer

}, completion: { (finished) -> Void in

UIView.transitionWithView(self.textViewForPlayer, duration: 0.25,
options: .TransitionCrossDissolve, animations: { () -> Void in

stringForPlayer.addAttribute(

NSForegroundColorAttributeName,

value: UIColor.greenColor(),

range: rangeOfText)

self.textViewForPlayer.attributedText = stringForPlayer

}, completion: nil)
})

关于ios - 如何在 UINavigationItem titleView 中创建淡入/淡出动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34603486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com