2016-11-09 63 views
0

目前,我有一个字符串数组在我swift和我在一个循环中显示它们在UILabel如何在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 
} 

这样的作品,但每个文本消失,突然显示 - 有没有修改它的一种方式让每个文字消失/顺利显示?我想过使用animateWithDuration和修改alpha,但我不知道如何正确地做到这一点。

+0

代替检查'i',你也可以使用'greetings [i%greetings.count]'。 –

+0

@HennyLee嗯,你究竟是什么意思?对不起,我只是快速学习:) – user3766930

+1

通过使用'问候[i%greetings.count]'你可以增加'i'而不必担心会出现越界。在你的情况下,'100%greetings.count'与'0'相同。这是因为'%'是一个模。结果将是分割时的余数。例如,“5%3 = 2”意味着2是将5除以3的余数。 –

回答

2

您可以设定动画文本的东西像这样的标签

UIView.transition(with: label, 
         duration: 0.25, 
         options: [.transitionCrossDissolve], 
         animations: { 
         label.text = "Your Text" 
}, completion: nil) 
1

可以尝试像这样

//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") 

没有测试过,所以可能需要一些调整,但香港专业教育学院使用这样的事情淡入和淡出前