ios - 模板 UIImage 改变颜色

标签 ios cocoa-touch uiimage

<分区>

我写这段代码是为了创建一个按钮,里面有一个 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 恢复为红色。我希望该图像即使在出现警报时也保持红色,只是比屏幕的其余部分稍暗。我该怎么做?

最佳答案

我认为问题是当你点击按钮时,它会高亮显示或被选中,但你只为正常状态设置了图像,所以你需要改变这个

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

有了这个

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

关于ios - 模板 UIImage 改变颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47833283/

相关文章:

objective-c - 旋转 CGImage

ios - 在联系人详细信息窗口中选择电子邮件属性后显示邮件编辑器时,Titanium 应用程序崩溃

ios - UITableView的 subview 永远不会显示

ios - 从 firebase 中获取 UI Image 与在 .text 中获取 UI Label 有何不同,图像获取会产生哪些潜在问题?

objective-c - NSUTF8StringEncoding 返回 nil NSString

Iphone 将 IplImage 转换为 UIImage 并返回导致旋转

ios - 解析崩溃报告不起作用

ios - 在 Cocoa Touch 应用程序上生成崩溃报告

objective-c - respondsToSelector 和 class_getInstanceMethod

iphone - 从 UIImage 获取数据