Tengo mi propia subclase de UIButton
. Lo agrego UIImageView
y agrego una imagen. Me gustaría pintarlo sobre la imagen con un color de tinte pero no funciona.
Hasta ahora tengo:
- (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];
...
y en la selección:
- (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]];
}
}
¿Qué hice mal? (El color de la imagen siempre es el mismo que era originalmente).
setTintColor
cuando estás creando el iconView ?Respuestas:
En lugar de este código:
Deberías:
Use esto en Swift 4.1
fuente
También puede configurar esto en su activo. Asegúrese de que su imagen contenga todos los píxeles blancos + transparentes.
fuente
(No se puede editar la publicación de @Zhaolong Zhong)
En swift 3.0 , puede hacer:
fuente
En swift 2.0+, puede hacer:
fuente
Versión Swift: 5.2
C objetivo
O
También puede configurar esto en su activo.
fuente
Un paso mas alla. Esta es una subclase de UIImageView. (No es una solución exacta para la pregunta original). Úselo en Interface Builder configurando el nombre de la clase en TintedImageView. Se actualiza en tiempo real dentro del diseñador a medida que cambia el color del tinte.
(Swift 3.1, Xcode 8.3)
fuente
Hacer el imageView
Haz la imagen
Conectarlos juntos
Mostrarlo
fuente
todo lo dicho es correcto. mi contribución Si no puede / no quiere aplicar a cada UiImageView, O para mayor eficiencia, necesita renderizar UNA VEZ (o ejemplo para celdas de vistas de tabla)
Y establezca todos los elementos de la interfaz de usuario en este UIImage.
fuente
La respuesta de @odemolliens debería funcionar.
Pero si aún tiene problemas, asegúrese de que el color de tinte que está aplicando a UIImageView sea diferente al definido en Interface Builder.
fuente