使用Firebase Observe Data(Swift)更新UI



在观察Firebase节点时,我很难更新Swift应用程序上的UI。我有一个red_valuegreen_valueblue_value存储在正在提取的firebase中,用于构建UIColor,然后用于更新UI上按钮的背景色。我成功地获取了颜色值,但当我尝试从observe闭包中更新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)时它按预期工作,这意味着redValuegreenValue和&blueValue变量

提前感谢您的帮助

事实证明,我忘记了将每个颜色值除以255,使其处于0.0-1.0的范围内。如果该值大于1.0,则将其设置为1.0,从而生成白色。

除以255后,它就像一个魅力

最新更新