为 forEach 循环中的每个项目生成随机背景颜色
generate a random background color for each item in forEach loop
我想做的是看看是否有可能在 for each 循环中我可以为每个循环分配随机背景颜色 item.I 尝试了以下内容,但无法编译。我知道有一种方法可以通过在 for each 之外设置一个变量并作为 uicolor 的一部分增加来做到这一点,但我想看看是否有一种方法可以在不创建变量的情况下做到这一点。
var frontBox = UIButton()
var backBox = UIButton()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
[frontBox,backBox,slider].forEach{
[=10=].translatesAutoresizingMaskIntoConstraints = false
view.addSubview([=10=])
[=10=].backgroundColor = ar4random().uicolor
}
}
Swift 不再使用 ar4random
- 要获得随机数,您可以使用 .random(in: 0...1)
or similar.
此外,[=13=].backgroundColor
接受 UIColor
,而不是数字。您可能正在寻找这样的东西:
[=10=].backgroundColor = UIColor(
red: .random(in: 0...1),
green: .random(in: 0...1),
blue: .random(in: 0...1),
alpha: 1
)
这就组成了一个UIColor
from red
, green
, and blue
components,每一个都是0
到1
之间的一个随机数。
这取决于您希望这些颜色有多“随机”。如果你想要噪音,就按照aheze的建议。
如果你想要一些视觉上吸引人的东西,比如演示一个新的布局,试试这样的东西:
import UIKit
let stackView = UIStackView(frame: CGRect(x: 0,y: 0,width: 600,height: 100))
stackView.distribution = .fillEqually
let collection = 1...100
collection.forEach { i in
let view = UIView()
let hue = CGFloat(i) / CGFloat(collection.count)
view.backgroundColor = UIColor.init(hue: hue, saturation: 1, brightness: 1, alpha: 1)
stackView.addArrangedSubview(view)
}
关键是在UIColor上使用init(hue:saturation:brightness:alpha:) API并控制hue
参数改变颜色
该示例应该为您提供特定用例所需的一切。
游乐场截图:
我想做的是看看是否有可能在 for each 循环中我可以为每个循环分配随机背景颜色 item.I 尝试了以下内容,但无法编译。我知道有一种方法可以通过在 for each 之外设置一个变量并作为 uicolor 的一部分增加来做到这一点,但我想看看是否有一种方法可以在不创建变量的情况下做到这一点。
var frontBox = UIButton()
var backBox = UIButton()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
[frontBox,backBox,slider].forEach{
[=10=].translatesAutoresizingMaskIntoConstraints = false
view.addSubview([=10=])
[=10=].backgroundColor = ar4random().uicolor
}
}
Swift 不再使用 ar4random
- 要获得随机数,您可以使用 .random(in: 0...1)
or similar.
此外,[=13=].backgroundColor
接受 UIColor
,而不是数字。您可能正在寻找这样的东西:
[=10=].backgroundColor = UIColor(
red: .random(in: 0...1),
green: .random(in: 0...1),
blue: .random(in: 0...1),
alpha: 1
)
这就组成了一个UIColor
from red
, green
, and blue
components,每一个都是0
到1
之间的一个随机数。
这取决于您希望这些颜色有多“随机”。如果你想要噪音,就按照aheze的建议。
如果你想要一些视觉上吸引人的东西,比如演示一个新的布局,试试这样的东西:
import UIKit
let stackView = UIStackView(frame: CGRect(x: 0,y: 0,width: 600,height: 100))
stackView.distribution = .fillEqually
let collection = 1...100
collection.forEach { i in
let view = UIView()
let hue = CGFloat(i) / CGFloat(collection.count)
view.backgroundColor = UIColor.init(hue: hue, saturation: 1, brightness: 1, alpha: 1)
stackView.addArrangedSubview(view)
}
关键是在UIColor上使用init(hue:saturation:brightness:alpha:) API并控制hue
参数改变颜色
该示例应该为您提供特定用例所需的一切。
游乐场截图: