Zrobiłem to i to działa całkiem przyjemnie:
iOS: Applying a RGB filter to a greyscale PNG
Jednak jest oszustwo, to jest dodawanie, tak dla (np) czerwonej składowej każdego piksela, R_dest = R_src + R_tint
Jeśli chcesz precyzyjnie sterować, na przykład możesz wyodrębnić wartość skali szarości dla każdego piksela przez uśredniając komponenty RGB (z odpowiednim współczynnikiem ważenia), a następnie pomnożymy tę wartość przez odcień, więc uzyskany kolor będzie miał skalę szarości (Sr, Sg, Sb) * {Tr, Tg, Tb}
Wymagałoby to utworzenia fragment pamięci, tworzenie kontekstu bitmapowego, który wciąga do tego kawałka, wciąganie obrazu w ten kontekst, kopiowanie całej porcji pamięci na bezpieczne przechowywanie, przetwarzanie - pobieranie danych z kopii i modyfikowanie oryginalnego magazynu kopii zapasowych, a następnie wyodrębnianie obrazu z oryginalny sklep z aplikacjami i uwolnienie wszystkiego, co przydzielono.
Problem reconstituting UIImage from RGBA pixel byte data
Ta biblioteka zrobiła wszystko dla ciebie, to nie jest to najbardziej efektywna trasa, ale dostaje zadanie. iirc używa malloc, kiedy powinien używać calloc.
Podczas gdy jest to miłe i już wiedziałem o tym, to tak naprawdę nie działa dla mnie, ponieważ chcę, aby mój UIBarButtonItem utrzymywał właściwości paska narzędziowego paska narzędzi i jak tylko wprowadzisz niestandardowy widok z Uibuttonem, to jest już okno AFAIK. Wszystko, co chcę zrobić, to zmienić kolor tekstu :( –
wspaniała odpowiedź bez użycia png. – andyPaul
Jedna uwaga: tworzy przycisk, który nie działa tak jak przycisk - uruchamia swoje zdarzenie, gdy użytkownik zaczyna kran, zamiast wydawania (np. touchUpInside) Niestety wydarzenie UIControlEventTouchUpInside wydaje się być połknięte przez Cocoa, a dodanie do niego celu na podzielonym na segmenty formantu nie działa. –