2016-11-09 85 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") 

沒有測試過,所以可能需要一些調整,但香港專業教育學院使用這樣的事情淡入和淡出前