如何淡入和淡出 Swift 中同一 UILabel 上的不同文本?
how can I fade in and out different texts on the same UILabel in Swift?
目前我的 swift
中有一个字符串数组,我在 UILabel
:
上循环显示它们
let greetings = ["Test1", "Test2", "Test3", "Test4"]
override func viewDidLoad(){
super.viewDidLoad()
Timer.scheduledTimer(timeInterval: 2.0, target: self, selector: #selector(TutorialEntryPoint.update), userInfo: nil, repeats: true)
}
var i = 0
func update() {
if(i==4){
i=0
}
myLabel.text = greetings[i]
i += 1
}
行得通,但每个文本突然消失并显示 - 有没有办法修改它以使每个文本 disappears/shows 流畅?我考虑过使用 animateWithDuration
并修改 alpha
,但我不确定如何正确地进行。
可以试试这样的
//inside viewDidLoad
let animation = CAKeyframeAnimation()
animation.keyPath = "opacity"
animation.values = [0, 1, 1, 0]
animation.keyTimes = [0, 0.1, 0.9, 1]
animation.duration = 2.0 //same as your timer
animation.repeatCount = Float.infinity
myLabel.layer.addAnimation(animation, forKey: "fade")
还没有测试过,所以可能需要一些调整,但我之前用过类似的东西来淡入淡出一些东西
您可以像这样在标签上设置动画设置文本
UIView.transition(with: label,
duration: 0.25,
options: [.transitionCrossDissolve],
animations: {
label.text = "Your Text"
}, completion: nil)
我在几天内尝试了几种变体,我找到的最佳解决方案是:https://medium.com/ios-os-x-development/swift-3-so-i-wanted-to-animate-a-label-14dd2b332ef9
必须更改变量和函数以说明 String
类型而不是 Int
类型。我使用的是字符串数组(如此处的问题),因此我在第 131 行的 setTextValue
之后增加了一个索引。
目前我的 swift
中有一个字符串数组,我在 UILabel
:
let greetings = ["Test1", "Test2", "Test3", "Test4"]
override func viewDidLoad(){
super.viewDidLoad()
Timer.scheduledTimer(timeInterval: 2.0, target: self, selector: #selector(TutorialEntryPoint.update), userInfo: nil, repeats: true)
}
var i = 0
func update() {
if(i==4){
i=0
}
myLabel.text = greetings[i]
i += 1
}
行得通,但每个文本突然消失并显示 - 有没有办法修改它以使每个文本 disappears/shows 流畅?我考虑过使用 animateWithDuration
并修改 alpha
,但我不确定如何正确地进行。
可以试试这样的
//inside viewDidLoad
let animation = CAKeyframeAnimation()
animation.keyPath = "opacity"
animation.values = [0, 1, 1, 0]
animation.keyTimes = [0, 0.1, 0.9, 1]
animation.duration = 2.0 //same as your timer
animation.repeatCount = Float.infinity
myLabel.layer.addAnimation(animation, forKey: "fade")
还没有测试过,所以可能需要一些调整,但我之前用过类似的东西来淡入淡出一些东西
您可以像这样在标签上设置动画设置文本
UIView.transition(with: label,
duration: 0.25,
options: [.transitionCrossDissolve],
animations: {
label.text = "Your Text"
}, completion: nil)
我在几天内尝试了几种变体,我找到的最佳解决方案是:https://medium.com/ios-os-x-development/swift-3-so-i-wanted-to-animate-a-label-14dd2b332ef9
必须更改变量和函数以说明 String
类型而不是 Int
类型。我使用的是字符串数组(如此处的问题),因此我在第 131 行的 setTextValue
之后增加了一个索引。