字形图像不会改变颜色

时间:2018-11-07 04:59:15

标签: swift uicolor glyph

问题:我有来自同一站点(icons8.com)的三个字形,当我尝试将它们设置为相同的颜色时,只有1个字形可以正常工作。

深度: 因此,我尝试获取一些字形来更改颜色。有些工作,有些没有。

在这里您可以看到字形已正确设置为“黄色”色调 enter image description here

但是,当我转到另一个调用相同颜色过程的视图时,它不起作用。字形在咖啡和啤酒标牌上保持黑色(这两个无效),但足球设置正确。提醒,所有都设置为黄色。 enter image description here

这是我使用的代码,用于设置普通cellForRowAt内单元格中的字形颜色。

    cell.iconView.backgroundColor = eventAnnotation.markerTintColor
    cell.iconImageView.image = UIImage(named: eventAnnotation.imageName ?? "")
    cell.iconImageView.tintColor = eventAnnotation.glyphTintColor

这是我正在使用的创建标记的视图。

class EventMarkerView: MKMarkerAnnotationView {
override var annotation: MKAnnotation? {
    willSet {
        guard let eventAnnotation = newValue as? EventAnnotation else { return }
        canShowCallout = true
        calloutOffset = CGPoint(x: -5, y: 5)
        rightCalloutAccessoryView = UIButton(type: .detailDisclosure)

        markerTintColor = eventAnnotation.markerTintColor
        glyphTintColor = eventAnnotation.glyphTintColor
        //glyphText = String(event.discipline.first!)
        if let imageName = eventAnnotation.imageName {
            glyphImage = UIImage(named: imageName)
        } else {
            glyphImage = nil
        }


        let detailLabel = UILabel()
        detailLabel.numberOfLines = 3
        detailLabel.font = detailLabel.font.withSize(12)
        detailLabel.text = eventAnnotation.subtitle
        detailCalloutAccessoryView = detailLabel

    }
}

}

我还将附加我正在使用的不同字形集。

"Beer". doesn't work

"Soccer ball outline". Does work

"Cafe". doesn't work

1 个答案:

答案 0 :(得分:1)

我终于找到了答案。我不得不强制图像(请注意第二行)始终使用模板。

    cell.iconView.backgroundColor = eventAnnotation.markerTintColor
    cell.iconImageView.image = UIImage(named: eventAnnotation.imageName ?? "")?.withRenderingMode(.alwaysTemplate)
    cell.iconImageView.tintColor = eventAnnotation.glyphTintColor

这是.withRenderingMode的Apple文档。