У меня есть собственный подкласс UIButton
. Я добавляю UIImageView
и добавляю изображение. Я хотел бы закрасить изображение оттенком, но это не работает.
Пока у меня есть:
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
self.backgroundColor = [UIColor clearColor];
self.clipsToBounds = YES;
self.circleView = [[UIView alloc]init];
self.circleView.backgroundColor = [UIColor whiteColor];
self.circleView.layer.borderColor = [[Color getGraySeparatorColor]CGColor];
self.circleView.layer.borderWidth = 1;
self.circleView.userInteractionEnabled = NO;
self.circleView.translatesAutoresizingMaskIntoConstraints = NO;
[self addSubview:self.circleView];
self.iconView = [[UIImageView alloc]init];
[self.iconView setContentMode:UIViewContentModeScaleAspectFit];
UIImage * image = [UIImage imageNamed:@"more"];
[image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
self.iconView.image = image;
self.iconView.translatesAutoresizingMaskIntoConstraints = NO;
[self.circleView addSubview:self.iconView];
...
и по выбору:
- (void) setSelected:(BOOL)selected
{
if (selected) {
[self.iconView setTintColor:[UIColor redColor]];
[self.circleView setTintColor:[UIColor redColor]];
}
else{
[self.iconView setTintColor:[UIColor blueColor]];
[self.circleView setTintColor:[UIColor blueColor]];
}
}
Что я сделал не так? (Цвет изображения всегда остается таким же, каким был изначально.)
setTintColor
когда создаете iconView ?Ответы:
Вместо этого кода:
у вас должно быть:
Используйте это в Swift 4.1
источник
Вы также можете просто установить это на своем активе. Убедитесь, что ваше изображение содержит все белые + прозрачные пиксели.
источник
(Не могу редактировать сообщение @Zhaolong Zhong)
В Swift 3.0 вы можете:
источник
В Swift 2.0+ вы можете:
источник
Быстрая версия: 5.2
Цель C
Или
Вы также можете просто установить это на своем активе.
источник
На шаг впереди. Это подкласс UIImageView. (Не точное решение исходного вопроса.) Используйте в Интерфейсном Разработчике, установив имя класса в TintedImageView. Обновления в реальном времени внутри дизайнера по мере изменения цвета оттенка.
(Swift 3.1, Xcode 8.3)
источник
Сделайте imageView
Сделайте изображение
Соедините их вместе
Показать это
источник
все сказано правильно. мой вклад Если вы не можете / не хотите применять к каждому UiImageView, ИЛИ для эффективности вам нужно визуализировать ОДИН РАЗ (или, например, для ячеек таблиц)
И установите для всех элементов пользовательского интерфейса этот UIImage.
источник
@odemolliens ответ должен работать.
Но если у вас все еще есть проблемы, убедитесь, что цвет оттенка, который вы применяете к UIImageView, отличается от цвета, определенного в Interface Builder.
источник