Tengo una UISwitch en mi iOS 6 para la aplicación, en y fuera de imagen personalizados.

self.testSwitch.onImage = [UIImage imageNamed:@"on"]; 
self.testSwitch.offImage = [UIImage imageNamed:@"off"];

Puedo usar 77 puntos de ancho y 22 puntos altos de la imagen para este propósito (154×44 en la retina), como se indica en la documentación. Pero mi imagen no se ajusta a mi uiswitch, parece feo, el estilo predeterminado se esconde de mi, como en la imagen adjunta.

Personalizar uiswitch correctamente la imagen?

Lo que debo configurar para que funcione de una manera adecuada?

InformationsquelleAutor Tom | 2013-05-08

2 Comentarios

  1. 2

    Apple no tiene una Apariencia API para UISwitch. Usted puede establecer un matiz de color de la propiedad (onTintColor). Pero eso no es lo que quiere, supongo. El problema acerca de la personalización de UISwitch es que hay la oportunidad de que Apple va a rechazar su aplicación.

    Pero hay algunas APIs para un cambio personalizada como RCSwitch(https://github.com/robertchin/rcswitch) o TTSwitch. Un buen tutorial y ejemplo de cómo utilizar RCSwitch se puede encontrar aquí: http://www.raywenderlich.com/23424/photoshop-for-developers-creating-a-custom-uiswitch.

    • Se ha de IOS6!developer.apple.com/library/ios/#documentation/uikit/reference/…
    • Lo siento, me olvidé de eso. Pero es solo para iOS 6. El uso de las bibliotecas que lo hacen compatible con versiones más antiguas.
    • Gracias, clase de usted. De todos modos no necesito versiones anteriores en mi proyecto
    • Así que parece que también quiere cambiar el pulgar de look? Por favor me corrija si estoy equivocado.
    • Sí, como mi libro dice pulgar debe estar incluido en la imagen personalizada
    • Creo que el pulgar gráfico generado por el sistema cubre el encendido/apagado de las imágenes que está en la parte de atrás como en la TTSwitch biblioteca: raw.github.com/twotoasters/TTSwitch/master/Resources/… por Lo que creo que la pista de la capa no es igual a la de encendido/apagado de la imagen.
    • Veo, muchas gracias!
    • FYI, iOS 6, la adopción es > 92% (y subiendo.)

  2. 6

    Aquí es código de mi libro. Esto no es exactamente lo que quieres hacer, pero es una muestra de la técnica y va a empezar! Aviso que estoy usando 79 27 (no estoy seguro de dónde sacó sus números de):

    UIGraphicsBeginImageContextWithOptions(CGSizeMake(79,27), NO, 0);
    [[UIColor blackColor] setFill];
    UIBezierPath* p = [UIBezierPath bezierPathWithRect:CGRectMake(0,0,79,27)];
    [p fill];
    NSMutableParagraphStyle* para = [NSMutableParagraphStyle new];
    para.alignment = NSTextAlignmentCenter;
    NSAttributedString* att =
        [[NSAttributedString alloc] initWithString:@"YES" attributes:
            @{
                NSFontAttributeName:[UIFont fontWithName:@"GillSans-Bold" size:16],
                NSForegroundColorAttributeName:[UIColor whiteColor],
                NSParagraphStyleAttributeName:para
            }];
    [att drawInRect:CGRectMake(0,5,79,22)];
    UIImage* im = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    self.sw2.onImage = im;

    Se parece a esto:

    Personalizar uiswitch correctamente la imagen?

    • Es a partir de IOS6 programación libro de cocina, página 113
    • No trabajo. en iO67, no se muestra nada.
    • Sí, @giuseppe, que tomó esta función de nuevo en iOS 7! De modo que el código es iOS 6 solo. Esto es realmente exasperante.
    • Sí esto no funciona en iOS 7, así que no pierdas el tiempo, cambiando el UISwitch mirar a los que de otra imagen. Es una mierda ser honesto..

Dejar respuesta

Please enter your comment!
Please enter your name here