La mia domanda ruota attorno alla distinzione di un UISegmentedController su una UINavigationBar contro una UIToolbar. Se mi cade un UISegmentedControl in una barra di navigazione come segue:UISegmentedControl Color in a UIToolbar
navigationBar.barStyle = UIBarStyleBlackTranslucent;
tutto va bene. UISegmentedControl identifica l'opzione selezionata con un nero leggermente più scuro. Ma se lascio UISegmentedControl su una UIToolbar, non rileva il colore o la traslucenza dalla barra degli strumenti. Se imposto manualmente tintColor, UISegmentedControl non distingue più tra selezionati e non selezionati.
Certo, uno deve avvolgere UISegmentedControl in un UIBarButtonItem prima di cadere su una UIToolbar. Mi chiedo se questo è parte del motivo per cui UISegmentedControl sembra errato (blu su sfondo nero traslucido).
toolbar.barStyle = UIBarStyleBlackTranslucent;
UIBarButtonItem *item = [[[UIBarButtonItem alloc] initWithCustomView:segmentedControl];
NSArray *toolbarItems = [[NSArray alloc] initWithObjects:item,nil];
toolbar.items = toolbarItems;
Certo, il mio codice non è esattamente come è scritto da quando sto usando la barra degli strumenti di navigazione e di controllo interno, ma la logica generale è la stessa. Non sono sicuro di come UISegmentedControl sulla UIToolbar abbia uno stile traslucido nero, mantenendo un'evidente distinzione tra segmenti selezionati e non selezionati.
Questo aiuta: 'segmentedController.tintColor = [UIColor darkGrayColor];' ma crea una dipendenza hard-coded che preferirei non introdurre. Ad esempio, rendere leggermente più complicato consentire la selezione degli utenti di combinazioni di colori. –
L'hai capito alla fine? – DenNukem
Fino a quando Apple non implementa la logica di colorazione UINavigation nella UIToolbar per UISegmentedControl, sono stato relegato per utilizzare la proprietà tintColor. –