【问题标题】:Backgroundcolor Doesn't change?背景颜色不改变?
【发布时间】:2018-08-22 19:56:52
【问题描述】:

我已经发送了一个颜色名称以及来自不同 ViewController 的委托,并且数据成功接收(打印了正确的颜色)。然后,如果我想更改视图本身的背景颜色,则使用我收到的名称,但它不起作用。

func sendColor(color: String) {
    let colorLowercased = color.lowercased()
    print(colorLowercased)

    view.backgroundColor = UIColor(named: "\(colorLowercased)")
    print(view.backgroundColor)
}

代码执行

更改背景颜色后为 nil 且视图为黑色

在 colorviewController 中,这是我要发送的委托函数

@IBAction func colorPressed(_ sender: UIButton) {
    let selectedColor = sender.currentTitle

    if let delegate = delegate {
        delegate.sendColor(color: selectedColor!)
    }

    _ = navigationController?.popViewController(animated: true)

}

顺便说一句,我正在使用 swift 4.2

【问题讨论】:

  • 您必须在名称和相应的UIColor 之间创建映射。
  • 什么是映射?
  • 可能是一本字典?上面写着“绿色”-> UIColor.green、“红色”-> UIColor.red 等
  • 简短回答:您的方法行不通。您无法从作为颜色名称的字符串值中获取颜色。该初始化程序用于从资产中获取颜色。
  • 哦。那我该怎么办

标签: ios iphone delegates swift4.2


【解决方案1】:

它是黑色的,因为您的代码试图将view.backgroundColor 设置为可能为零的颜色。您的应用资产中有named 颜色吗?要添加它们,您可以参考此 post 。或者,不要将标题传递给sendColor:,而是传递按钮的颜色(标题颜色/bgColor/tintColor)。

func sendColor(color: UIColor)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-05
    • 2015-06-16
    • 1970-01-01
    • 2012-04-02
    • 2011-05-18
    • 2014-06-21
    相关资源
    最近更新 更多