问题:我有来自同一站点(icons8.com)的三个字形,当我尝试将它们设置为相同的颜色时,只有1个字形可以正常工作。
深度: 因此,我尝试获取一些字形来更改颜色。有些工作,有些没有。
但是,当我转到另一个调用相同颜色过程的视图时,它不起作用。字形在咖啡和啤酒标牌上保持黑色(这两个无效),但足球设置正确。提醒,所有都设置为黄色。
这是我使用的代码,用于设置普通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
}
}
}
我还将附加我正在使用的不同字形集。
答案 0 :(得分:1)
我终于找到了答案。我不得不强制图像(请注意第二行)始终使用模板。
cell.iconView.backgroundColor = eventAnnotation.markerTintColor
cell.iconImageView.image = UIImage(named: eventAnnotation.imageName ?? "")?.withRenderingMode(.alwaysTemplate)
cell.iconImageView.tintColor = eventAnnotation.glyphTintColor
这是.withRenderingMode的Apple文档。