- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想创建像 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/
我是一名优秀的程序员,十分优秀!