Ich habe das gleiche Problem getroffen. Ich denke, das ist ein Fehler.
Sie könnten dieses Radar http://openradar.appspot.com/radar?id=5334033567318016 dupen, die auf dieses minimale Beispiel app https://github.com/algal/TemplateImagesBrokenDemo verweist.
Ich kenne zwei Abhilfen für dieses Problem
Wrap in UIButton
Seit tintColor für UIButtons arbeitet, ist eine Problemumgehung statt UIImageView nur mit userInteractionEnabled = false einen benutzerdefinierten Typ UIButton zu verwenden. Wenn Sie die Interaktivität der Schaltfläche mit UIView.userInteractionEnabled (im Gegensatz zu UIControl.enabled) deaktivieren, ändern Sie das Aussehen des Bildes nicht.
das Bild manuell in Code neu eingestellt
Eine andere Lösung ist es, die .image
Eigenschaft im Code neu gesetzt wird, nachdem die von der UIImageView nib geladen wurde. Dies funktioniert, weil das Festlegen eines Bildes im Code die Templating-Logik auszulösen scheint. Damit dies funktioniert, müssen Sie das Bild auf den vorhandenen Wert zurücksetzen, sodass es im Compiler nicht optimiert wird. Ein Ausschnitt wie dies in awakeFromNib
hat für mich gearbeitet:
override func awakeFromNib() {
super.awakeFromNib()
if shouldSetImagesManually {
// the following three-lines should in theory have no effect.
// but in fact, they ensure that the UIImageView
// correctly applies its tintColor to the vector template image
let image = self.templateImageView.image
self.templateImageView.image = nil
self.templateImageView.image = image
}
Diese Frage ist ein Duplikat [Modify UIImage rendering von Storyboard/xib Datei] (http://stackoverflow.com/questions/19517334/modify-uiimage-renderingmode-from-storyboard-xib-Datei) – 0xced