para pantalla grises filtros escala como colores color cambiar apariencia adaptaciones ios objective-c uiview ios7 uiswitch

pantalla - ¿Cómo hago que un UISwitch bajo iOS 7 no tome el color de fondo de la vista detrás de él?



escala de grises iphone (6)

Se ve así cuando está apagado:

Aunque prefiero más de un fondo gris. ¿Realmente tengo que usar un UIImageView?


Añadiendo a la solución de Barry Wyckoff: establecer también el color del tinte

UISwitch *mySwitch = [[UISwitch alloc] initWithFrame:CGRectMake(0.0, 0.0, 51.0, 31.0)]; mySwitch.backgroundColor = [UIColor redColor]; mySwitch.layer.cornerRadius = 16.0; // you must import QuartzCore to do this. mySwitch.tintColor = [UIColor redColor]; [self addSubview:mySwitch];


Aquí es cómo cambié el color de relleno de mi iOS7 UISwitch.

Primero necesitas importar QuartzCore.

#import <QuartzCore/QuartzCore.h>

A continuación, establezca el color de fondo y redondee las esquinas de UISwitch.

UISwitch *mySwitch = [[UISwitch alloc] initWithFrame:CGRectMake(0.0, 0.0, 51.0, 31.0)]; mySwitch.backgroundColor = [UIColor redColor]; mySwitch.layer.cornerRadius = 16.0; // you must import QuartzCore to do this. [self addSubview:mySwitch];

Esto le dará un interruptor UIS con un color de fondo (fondo) personalizado.

Espero que esto ayude a alguien:)


No hay soporte de API para cambiar el color de relleno de un UISwitch .

El ajuste del tintColor solo afectará el contorno, y el ajuste del backgroundColor afectará a todo el marco, incluidas las partes fuera de los límites redondeados.

O bien, debe colocar una UIView opaca con la forma adecuada detrás o, más fácil, usar una implementación de código abierto personalizada, como MBSwitch , que le permite configurar el color de relleno.


Puede establecer la propiedad setOnTintColor de su UISwitch al color que desee.


También puede establecer esto para el conmutador en Interface Builder. Simplemente configure el color de fondo del UISwitch de UISwitch al color que desee (blanco, en el ejemplo a continuación), luego configure un atributo de tiempo de ejecución definido por el usuario de layer.cornerRadius = 16 :


También puede usar una imagen como fondo, usando [UIColor colorWithPatternImage];

mySwitch.onTintColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"toggle-bg-on"]]; mySwitch.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"toggle-bg-off"]];