Swift: 如何每秒随机更改背景颜色?
Swift: How can I change the background color randomly every second?
每次我打开应用程序时,下面的代码都会从我的颜色数组中随机提供一种背景颜色,但不会每秒更改颜色。我这里做错了什么?
import UIKit
class ViewController: UIViewController {
var timer = NSTimer()
func randomColorGenerator() -> Int{
let randomColor = Int(arc4random_uniform(4))
return randomColor
}
override func viewDidLoad() {
super.viewDidLoad()
let colors = [
UIColor(red: 233/255, green: 203/255, blue: 198/255, alpha: 1),
UIColor(red: 38/255, green: 188/255, blue: 192/255, alpha: 1),
UIColor(red: 253/255, green: 221/255, blue: 164/255, alpha: 1),
UIColor(red: 235/255, green: 154/255, blue: 171/255, alpha: 1),
UIColor(red: 87/255, green: 141/255, blue: 155/255, alpha: 1)
]
timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("randomColorGenerator"), userInfo: nil, repeats: true)
let randColor = ViewController().randomColorGenerator()
self.view.backgroundColor = colors[randColor]
}
试试这个代码:
import UIKit
class ViewController: UIViewController {
var timer: NSTimer!
func setRandomBackgroundColor() {
let colors = [
UIColor(red: 233/255, green: 203/255, blue: 198/255, alpha: 1),
UIColor(red: 38/255, green: 188/255, blue: 192/255, alpha: 1),
UIColor(red: 253/255, green: 221/255, blue: 164/255, alpha: 1),
UIColor(red: 235/255, green: 154/255, blue: 171/255, alpha: 1),
UIColor(red: 87/255, green: 141/255, blue: 155/255, alpha: 1)
]
let randomColor = Int(arc4random_uniform(UInt32 (colors.count)))
self.view.backgroundColor = colors[randomColor]
}
override func viewDidLoad() {
super.viewDidLoad()
timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("setRandomBackgroundColor"), userInfo: nil, repeats: true)
self.setRandomBackgroundColor()
}
}
我所做的更改:我已将您的 randomColorGenerator
函数重命名为 setRandomBackgroundColor
。然后我让这个函数真正改变颜色,而不是仅仅计算和返回一些随机索引。
其他一些小改动:let randomColor = Int(arc4random_uniform(4))
您可以使用 UInt32(colors.count)
而不是硬编码常量 4
。
var timer = NSTimer()
– 你不需要初始化这个定时器,你以后不会使用这个初始值。只需声明变量类型就足够了:var time: NSTimer!
在您的初始示例中,您每秒都在计算随机索引,但您并没有使用它来实际设置背景颜色。
@glyuck 回答 2019 更新:
override func viewDidLoad() {
super.viewDidLoad()
timer = Timer.scheduledTimerWithTimeInterval(1, target: self, selector: #selector(self.setRandomBackgroundColor), userInfo: nil, repeats: true)
self.setRandomBackgroundColor()
}
每次我打开应用程序时,下面的代码都会从我的颜色数组中随机提供一种背景颜色,但不会每秒更改颜色。我这里做错了什么?
import UIKit
class ViewController: UIViewController {
var timer = NSTimer()
func randomColorGenerator() -> Int{
let randomColor = Int(arc4random_uniform(4))
return randomColor
}
override func viewDidLoad() {
super.viewDidLoad()
let colors = [
UIColor(red: 233/255, green: 203/255, blue: 198/255, alpha: 1),
UIColor(red: 38/255, green: 188/255, blue: 192/255, alpha: 1),
UIColor(red: 253/255, green: 221/255, blue: 164/255, alpha: 1),
UIColor(red: 235/255, green: 154/255, blue: 171/255, alpha: 1),
UIColor(red: 87/255, green: 141/255, blue: 155/255, alpha: 1)
]
timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("randomColorGenerator"), userInfo: nil, repeats: true)
let randColor = ViewController().randomColorGenerator()
self.view.backgroundColor = colors[randColor]
}
试试这个代码:
import UIKit
class ViewController: UIViewController {
var timer: NSTimer!
func setRandomBackgroundColor() {
let colors = [
UIColor(red: 233/255, green: 203/255, blue: 198/255, alpha: 1),
UIColor(red: 38/255, green: 188/255, blue: 192/255, alpha: 1),
UIColor(red: 253/255, green: 221/255, blue: 164/255, alpha: 1),
UIColor(red: 235/255, green: 154/255, blue: 171/255, alpha: 1),
UIColor(red: 87/255, green: 141/255, blue: 155/255, alpha: 1)
]
let randomColor = Int(arc4random_uniform(UInt32 (colors.count)))
self.view.backgroundColor = colors[randomColor]
}
override func viewDidLoad() {
super.viewDidLoad()
timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("setRandomBackgroundColor"), userInfo: nil, repeats: true)
self.setRandomBackgroundColor()
}
}
我所做的更改:我已将您的 randomColorGenerator
函数重命名为 setRandomBackgroundColor
。然后我让这个函数真正改变颜色,而不是仅仅计算和返回一些随机索引。
其他一些小改动:let randomColor = Int(arc4random_uniform(4))
您可以使用 UInt32(colors.count)
而不是硬编码常量 4
。
var timer = NSTimer()
– 你不需要初始化这个定时器,你以后不会使用这个初始值。只需声明变量类型就足够了:var time: NSTimer!
在您的初始示例中,您每秒都在计算随机索引,但您并没有使用它来实际设置背景颜色。
@glyuck 回答 2019 更新:
override func viewDidLoad() {
super.viewDidLoad()
timer = Timer.scheduledTimerWithTimeInterval(1, target: self, selector: #selector(self.setRandomBackgroundColor), userInfo: nil, repeats: true)
self.setRandomBackgroundColor()
}