1
我想通過不同的顏色使背景顏色循環。iOS Swift - 改變背景顏色
我發現的代碼做在Objective-C在這裏:
- (void) doBackgroundColorAnimation {
static NSInteger i = 0;
NSArray *colors = [NSArray arrayWithObjects:[UIColor redColor], [UIColor greenColor], [UIColor blueColor], [UIColor whiteColor], [UIColor blackColor], nil];
if(i >= [colors count]) {
i = 0;
}
[UIView animateWithDuration:2.0f animations:^{
self.view.backgroundColor = [colors objectAtIndex:i];
} completion:^(BOOL finished) {
++i;
[self doBackgroundColorAnimation];
}];
}
然而,我的SWIFT代碼是不工作?我在完成方法中打印出「完成」一詞,但由於某種原因,它會像控制檯一直被調用一樣對控制檯進行垃圾處理?
我在做什麼錯?
import UIKit
class ViewController: UIViewController {
override func prefersStatusBarHidden() -> Bool {
return true
}
override func viewDidLoad() {
super.viewDidLoad()
self.tripOut()
}
func tripOut() {
var i = 0
let colors = [UIColor.redColor(),UIColor.blueColor(),UIColor.yellowColor()]
if(i >= colors.count) {
i = 0
}
UIView.animateWithDuration(2.0, animations: {() -> Void in
self.view.backgroundColor = colors[i]
}, completion: { (value: Bool) in
++i
self.tripOut()
println("done")
})
}
}
因爲'tripOut'調用自身。永遠。 – matt
有沒有辦法讓它調用一次? – Josh
您可以使用一個標誌併爲該標誌添加一個條件,並且在任何時候都會停止動畫。 –