Сделайте свое изображение уважаемым свойством tintColor iOS
Я должен представить, что об этом спрашивали несколько раз, но я не должен правильно формулировать свой вопрос.
У меня есть свое собственное изображение, которое я сделал в фотошопе, и оно установлено как свойство изображения кнопки. Здесь это показывает нормально:
Фон прозрачный, но это 44x44 с тремя точками, размером 88x88 пикселей.png файл. Так что, если я сделаю что-то вроде этого:
self.theButton.tintColor = [UIColor redColor];
изображение все еще показывает как белый. По профессии я не дизайнер, поэтому мне кажется, что мне не хватает того, как правильно сохранить или настроить файлы, чтобы они соответствовали свойству tintColor. В фотошопе я обычно сохраняю их, используя "Сохранить для Интернета".
Спасибо
3 ответа
То, что вы ищете, это трафаретные изображения.
Из каталога пользовательского интерфейса UIKit:
Шаблоны изображений
В iOS 7 вы можете использовать любое изображение в приложении как шаблонное или трафаретное изображение. Когда вы решаете рассматривать изображение как шаблон, система игнорирует информацию о цвете изображения и создает трафарет изображения на основе альфа-значений в изображении (части изображения со значением альфа-канала менее 1,0 считаются полностью прозрачными), Этот трафарет можно затем перекрасить, используя tintColor, чтобы соответствовать остальной части вашего пользовательского интерфейса.
По умолчанию изображение (UIImage) создается с помощью UIImageRenderingModeAutomatic. Если на вашем изображении установлено UIImageRenderingModeAutomatic, оно будет обрабатываться как шаблон или оригинал в зависимости от контекста. Некоторые элементы UIKit, в том числе панели навигации, панели вкладок, панели инструментов, сегментированные элементы управления, автоматически обрабатывают свои изображения переднего плана как шаблоны, хотя их фоновые изображения обрабатываются как оригинальные. Другие элементы, такие как представления изображений и веб-представления, обрабатывают свои изображения как оригиналы. Если вы хотите, чтобы ваше изображение всегда обрабатывалось как шаблон независимо от контекста, установите UIImageRenderingModeAlwaysTemplate; если вы хотите, чтобы ваше изображение всегда обрабатывалось как оригинальное, установите UIImageRenderingModeAlwaysOriginal.
Чтобы указать режим рендеринга изображения, сначала создайте стандартное изображение, а затем вызовите метод imageWithRenderingMode: для этого изображения.
UIImage * myImage = [UIImage imageNamed: @ "myImageFile.png"]; myImage = [myImage imageWithRenderingMode: UIImageRenderingModeAlwaysTemplate];
Вы можете достичь желаемого результата, используя UIImage с режимом рендеринга UIImageRenderingModeAlwaysTemplate
,
UIImage *image = [UIImage imageNamed:@"Dots"];
UIImage *templateImage = [image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
[theButton setImage:templateImage forState:UIControlStateNormal];
Это два способа установить шаблон изображения
1. Использование Images.assets
2. Использование кода
UIImage *myImage = [UIImage imageNamed:@"myImageFile.png"];
myImage = [myImage imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
imageView.image = myImage;
imageView.tintColor = [UIColor greenColor] // or any other color you want