在观察Firebase节点时,我很难在Swift应用程序上更新UI。我有一个red_value
,一个green_value
和一个blue_value
,它们存储在firebase中,并正在获取这些数据并用于构建UIColor
,然后将其用于更新背景色我的用户界面上的一个按钮。我已经成功获取了颜色值,但是当我尝试从watch闭包内部更新UI时,颜色总是变成白色,我不知道为什么。
下面可以找到我的代码,以更好地了解我在加载视图时要完成的工作:
override func viewDidLoad() {
super.viewDidLoad()
self.charitiesReference.child(charityUsername!).observe(.value) {
snapshot in
let values = snapshot.value as! [String: Any]
let redValue = values["red_value"] as! CGFloat
let greenValue = values["green_value"] as! CGFloat
let blueValue = values["blue_value"] as! CGFloat
let charityColor = UIColor(red: redValue, green: greenValue, blue: blueValue, alpha: 1.0)
let ripplerFollowers = values["follower_ripplers"] as! [String: Bool]
if ripplerFollowers["\(self.username!)"] ?? false {
self.followOrFollowingButton.setTitle("Following", for: .normal)
//ERROR -> The line below is producing a white background on my button
self.followOrFollowingButton.backgroundColor = charityColor
} else {
self.followOrFollowingButton.setTitle("Follow", for: .normal)
self.followOrFollowingButton.backgroundColor = .clear
}
}
}
更新:
当我将self.followOrFollowingButton.backgroundColor = charityColor
行更改为self.followOrFollowingButton.backgroundColor = UIColor(red: 0, green: 120, blue: 120, alpha: 1.0)
时
它按预期运行,这意味着redValue
,greenValue
和blueValue
变量
在此先感谢您的帮助!
答案 0 :(得分:1)
事实证明,我忘记了将每个颜色值除以255,而将它们设置在0.0-1.0范围内。如果该值大于1.0,则将其设置为1.0,从而导致白色。
除以255后,它的工作原理就像一种魅力