Mam obraz o nazwie arrowWhite
. Chcę pokolorować ten obraz na czarny.
func attachDropDownArrow() -> NSMutableAttributedString {
let image:UIImage = UIImage(named: "arrowWhite.png")!
let attachment = NSTextAttachment()
attachment.image = image
attachment.bounds = CGRectMake(2.25, 2, attachment.image!.size.width - 2.25, attachment.image!.size.height - 2.25)
let attachmentString = NSAttributedString(attachment: attachment)
let myString = NSMutableAttributedString(string: NSString(format: "%@", self.privacyOptions[selectedPickerRow]) as String)
myString.appendAttributedString(attachmentString)
return myString
}
Chcę mieć ten obraz blackColour
.
tintColor
nie działa...
Odpowiedzi:
Swift 4 i 5
Zadzwoń tak:
Alternativ dla Swift 3, 4 lub 5
Dla Swift 2.3
Zadzwoń tak:
źródło
Istnieje wbudowana metoda uzyskiwania pliku,
UIImage
który jest automatycznie renderowany w trybie szablonu . Używa tintColor widoku do pokolorowania obrazu:źródło
Najpierw musisz zmienić właściwość renderowania obrazu na „Obraz szablonu” w folderze .xcassets. Następnie możesz po prostu zmienić właściwość koloru tinta instancji UIImageView w następujący sposób:
źródło
tintColor
usuniętyUIImage
? Byłem podekscytowany tą odpowiedzią, ale wydaje się, że nie istnieje w iOS 10Skończyło się na tym, ponieważ inne odpowiedzi albo tracą rozdzielczość, albo działają z UIImageView, a nie z UIImage, lub zawierają niepotrzebne akcje:
Szybki 3
źródło
UIImage
. Naprawdę fajna odpowiedź, dziękuję!Ta funkcja wykorzystuje do tego grafikę podstawową.
źródło
maskWithColor
rozszerzenie działa, ale ignoruje,scale
więc obraz nie wygląda ostro na urządzeniach o wyższej rozdzielczości.Dla Swift 4.2, aby zmienić kolor UIImage, jak chcesz (jednolity kolor)
Jak używać
źródło
Utwórz rozszerzenie na UIImage:
Następnie możesz tego użyć w ten sposób:
źródło
scale
,orientation
i inne parametryUIImage
.Uważam, że rozwiązanie HR jest najbardziej pomocne, ale dostosowałem je nieznacznie do Swift 3
Uwzględnia to skalę, a także nie daje obrazu o niższej rozdzielczości, jak niektóre inne rozwiązania. Stosowanie :
źródło
Szybkie opakowanie rozszerzenia 3 od @Nikolai Ruhe odpowiedź.
Można go również stosować
UIButton
np .:źródło
Szybki 4
źródło
Dodaj to rozszerzenie do swojego kodu i zmień kolor obrazu w samej serii ujęć.
Swift 4 i 5:
Podgląd scenorysu:
źródło
W przypadku iOS13 + dostępne są withTintColor (__ :) i withTintColor (_: renderingMode :) .
Przykładowe użycie:
lub
źródło
Szybki 3
21 czerwca 2017
Używam CALayer do maskowania podanego obrazu kanałem Alpha
źródło
Wersja Swift 3 ze skalą i orientacją z odpowiedzi @kuzdu
źródło
Szybki 4.
Użyj tego rozszerzenia, aby utworzyć jednolity kolorowy obraz
źródło
Po iOS 13 możesz go używać mniej więcej tak
źródło
Dodaj funkcję rozszerzenia:
Użyj jak:
źródło
Oto szybka 3 wersja rozwiązania HR.
źródło
Ponieważ odpowiedź Darko była bardzo pomocna w kolorowaniu niestandardowych pinezek dla adnotacji mapView, ale musiałem wykonać kilka konwersji dla Swift 3, pomyślałem, że udostępnię zaktualizowany kod wraz z moją rekomendacją dla jego odpowiedzi:
źródło
Zmodyfikowałem rozszerzenie znalezione tutaj: Github Gist , dla
Swift 3
którego testowałem w kontekście rozszerzenia dla UIImage.źródło