模板 UIImage 更改颜色 [重复]

Posted

技术标签:

【中文标题】模板 UIImage 更改颜色 [重复]【英文标题】:Template UIImage changes color [duplicate] 【发布时间】:2017-12-15 13:22:55 【问题描述】:

我编写了这段代码来创建一个带有 UIImage 的按钮。

func createDrawerBarButton(image : String) 

    let button = UIButton(type: .custom)
    button.setImage(UIImage(named: image)?.withRenderingMode(.alwaysTemplate), for: UIControlState.normal)

    button.frame = CGRect(x: 0, y: 0, width: 35, height: 35)
    button.tintColor = UIColor(red: 208/255, green: 33/255, blue: 33/255, alpha: 1.0)
    button.addTarget(self, action: #selector(self.drawerClicked(_:)), for: UIControlEvents.touchUpInside)

    let barButton = UIBarButtonItem(customView: button)
    self.navigationItem.leftBarButtonItem = barButton


当我单击按钮时,它会调用一个显示警报的方法。方法是这样的:

func drawerClicked(_ sender: Any) 
    let cancelAction = UIAlertAction(title: "Cancel", style: .default, handler: nil)
    let wifiAction = UIAlertAction(title: "Wi-Fi", style: .default)  (UIAlertAction) in
        let url = URL(string: "App-Prefs:root=WIFI")
        UIApplication.shared.openURL(url!)
    

    let alert = UIAlertController(title: "Wi-Fi)", message: "Please, connect your WI-FI", preferredStyle: .alert)

    alert.addAction(cancelAction)
    alert.addAction(wifiAction)
    self.present(alert, animated: true, completion: nil)

效果很好,但是当对话框出现时,我的 UIImage 会改变颜色。红色变成灰色。关闭对话框后, UIImage 恢复为红色。即使出现警报,我也希望该图像保持红色,仅比屏幕的其余部分稍暗。我该怎么做?

【问题讨论】:

【参考方案1】:

我认为问题是当您点击按钮时,它会突出显示或被选中,但是您仅将图像设置为正常状态,因此您需要更改此设置

button.setImage(UIImage(named: image)?.withRenderingMode(.alwaysTemplate), for: UIControlState.normal)

有了这个

button.setImage(UIImage(named: image)?.withRenderingMode(.alwaysTemplate), for: [.normal, .selected, .highlighted ])

【讨论】:

感谢您的回复。但是我的问题已经在这个链接中解决了***.com/questions/46817243/…

以上是关于模板 UIImage 更改颜色 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用遮罩更改 UIImage 的颜色并将该图像替换为彩色图像

ios:更改 UIImage 的颜色

我可以更改 UIButton 上的色调颜色,但不能更改 UIImage

点击 tableview 单元格时如何更改 UIImage 颜色?

如何在不透明的 UIImage 上用另一种颜色替换给定颜色 [重复]

如何更改UIImage / UIImageView的单个像素的颜色