2010-09-22 14 views
6

¿Cómo obtengo un UISegmentedControl que es como el de la aplicación de correo, para que sea del mismo color que los botones de la barra de UITO (como si ambos segmentos estuvieran en el estado seleccionado).UISegmentedControl en la aplicación de correo

Quiero usar el control segmentado exactamente para el mismo propósito que Mail.

(en el iPad, por lo que un gris no de color azul)

+0

¿No puedes cambiar el tintColor? –

+0

Bien, pero ¿a qué valor? –

Respuesta

1

El estilo que estoy buscando es indocumentado: es el estilo 4. Parece que el control arriba/abajo aquí: http://media.mobilemeandering.com/wp-content/uploads/2010/04/ipad-mail-message-2.png (no mi imagen por cierto)

Básicamente, hace que todos los segmentos parecen seleccionados, está destinado a empujes momentáneos, y es efectivamente múltiples botones de la barra de herramientas empujados hacia arriba. Por lo tanto, no se puede configurar en IB, pero se debe configurar en código o manualmente en el archivo nib/xib, abriendo la punta como un archivo de texto.

1

I no sabe exactamente lo que quiere decir .. pero creo que el "UISegmentedControlStyleBar", como no podía ser de segmentedControlStyle.

segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar 

¡Usted puede fijar esta característica en el IB también! (Es la propiedad llamada "estilo")

+0

Lo sé, pero gracias por responder, lo que quiero decir es que en el correo el control segmentado (los botones arriba y abajo) es del mismo color que un elemento UIbarbutton, sin embargo, agregué un control segmentado en IB y fue notablemente más ligero. –

6

Este es el código de los códigos de ejemplo de Apple ... NavBar y las dos imágenes utilizadas en el código ... podrá obtener exactamente la misma vista que la aplicación de correo.

alt textalt text

// "Segmented" control to the right 
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems: 
              [NSArray arrayWithObjects: 
               [UIImage imageNamed:@"up.png"], 
               [UIImage imageNamed:@"down.png"], 
              nil]]; 
[segmentedControl addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged]; 
segmentedControl.frame = CGRectMake(0, 0, 90, 30); 
segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar; 
segmentedControl.momentary = YES; 

defaultTintColor = [segmentedControl.tintColor retain]; // keep track of this for later 

UIBarButtonItem *segmentBarItem = [[UIBarButtonItem alloc] initWithCustomView:segmentedControl]; 
[segmentedControl release]; 

self.navigationItem.rightBarButtonItem = segmentBarItem; 
[segmentBarItem release]; 
+0

Estoy usando el iPad, ese código es para iphone, en que es el color incorrecto –

+0

opss .. Lo eché de menos ... no mucha idea abt ipad ... buena suerte – kthorat

3

usted busca la propiedad tintColor!

Cuando usa un UISegmentedControl puede cambiar el color de su tinte a cualquier color que pueda soñar. Por lo tanto, si se ha añadido la UISegmentedControl en Interface Builder, entonces sería lo estilo en su método - (void)viewWillAppear:(BOOL)animated como tal (suponiendo que lo tenía conectado a una Ivar @synthesized:

- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 

    // Set the tintColor to match the navigation bar 
    self.mySegmentedControl.tintColor = [UIColor colorWithRed:.94 green:.94 blue:.94 alpha:1]; 

    ... do whatever else in your viewWillAppear ... 
} 

Ahora, obviamente, tendrá que jugar con el rojo, verde, azul y alfa que puse en el código de ejemplo anterior, pero puedes teñir literalmente el UISegmentedController del color que quieras (o hacerlo tan transparente como quieras), así que solo es cuestión de encontrar los valores RGBA que se ven perfectos.

Recuerde que por documentos de Apple que the default value of this property is nil (no color). UISegmentedControl uses this property only if the style of the segmented control is UISegmentedControlStyleBar.

¡Buena suerte!

+0

Gracias, pero sé de esto, necesito saber qué tinte de color usar para obtener el mismo tinte que un UIBarButtonItem normal. ¿Existe una propiedad privada de un artículo de UIBarButton que pueda usar para obtener el valu –

+0

Pruebe rojo: .15 verde: .19 azul: .31. Como dije, solo tienes que jugar un poco para obtener el color * exacto * que deseas. Hay una herramienta ingeniosa que viene con OS X llamada DigitalColor Meter (está dentro de Aplicaciones/Utilidades). Puede usar eso para el mouse sobre cualquier cosa en su pantalla y le dará el combo de color exacto que está buscando. –

+0

Bueno .15, .19 y .31 no están ni cerca de los otros botones, pero supongo que tengo que violín :( –

0

No estoy seguro de entender exactamente lo que estás tratando de hacer, pero lo intentaré.

La solución no es obvia, debe usar un UISearchDisplayController para obtener un UISearchBar y UISegmentedControl coincidentes.

Consulte el código de ejemplo TableSearch para ver un ejemplo.

+0

iPad, no iPhone? –

+0

El código es el mismo para iPad ... – christo16

+0

Sin embargo, la pantalla es más grande, así que no quiero una barra de búsqueda, también necesito otros elementos de botón de barra junto al control segmentado. –

Cuestiones relacionadas