Mi pregunta gira en torno a la distinción de un UISegmentedController en un UINavigationBar frente a una UIToolbar. Si dejo caer un UISegmentedControl en una barra de navegación de la siguiente manera:UISegmentedControl Color en una UIToolbar
navigationBar.barStyle = UIBarStyleBlackTranslucent;
todo está bien. El UISegmentedControl identifica la opción seleccionada con un negro ligeramente más oscuro. Pero, si dejo caer un UISegmentedControl en una UIToolbar, no recoge el color o la translucidez de la barra de herramientas. Si configuro manualmente el tintColor, el UISegmentedControl ya no distingue entre seleccionado y no seleccionado.
Es cierto que uno debe envolver el UISegmentedControl en un UIBarButtonItem antes de colocarlo en una UIToolbar. Me pregunto si eso es parte de la razón por la que el UISegmentedControl parece incorrecto (azul sobre un fondo negro translúcido).
toolbar.barStyle = UIBarStyleBlackTranslucent;
UIBarButtonItem *item = [[[UIBarButtonItem alloc] initWithCustomView:segmentedControl];
NSArray *toolbarItems = [[NSArray alloc] initWithObjects:item,nil];
toolbar.items = toolbarItems;
Por supuesto, mi código no es exactamente como está escrito desde que estoy usando la barra de herramientas de navegación y control interno, pero la lógica general es la misma. No estoy seguro de cómo hacer que UISegmentedControl en la UIToolbar tenga un estilo negro translúcido, manteniendo una distinción obvia entre segmentos seleccionados y no seleccionados.
Esto ayuda: 'segmentedController.tintColor = [UIColor darkGrayColor];' pero crea una dependencia codificada que prefiero no introducir. Por ejemplo, haciéndolo un poco más complicado para permitir la selección de combinaciones de colores por parte del usuario. –
¿Lo descubriste al final? – DenNukem
Hasta que Apple implemente la lógica de coloreado de UINavigation en la barra de columnas de UIT para UISegmentedControl, he sido relegado para usar la propiedad tintColor. –