In iOS 6/7, ho usato UISegmentedControl
con immagini di sfondo per creare un effetto in questo modo:Perché i segmenti di UISegmentControl vengono evidenziati in iOS 8 quando sono state impostate le immagini di sfondo per tutti gli stati?
ho compiuto questo impostando l'immagine di sfondo per la UISegmentedControl
per ciascuno degli stati standard, in questo modo :
UIImage *segmentedControlBackgroundImage = [UIImage imageNamed:@"profileSegmentedControlBackground"];
UIImage *segmentedControlBackgroundSelectedImage = [UIImage imageNamed:@"profileSegmentedControlBackgroundSelected"];
[self.segmentedControl setBackgroundImage:segmentedControlBackgroundImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[self.segmentedControl setBackgroundImage:segmentedControlBackgroundImage forState:UIControlStateDisabled barMetrics:UIBarMetricsDefault];
[self.segmentedControl setBackgroundImage:segmentedControlBackgroundSelectedImage forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault];
[self.segmentedControl setBackgroundImage:segmentedControlBackgroundSelectedImage forState:UIControlStateSelected barMetrics:UIBarMetricsDefault];
Quando un segmento diventa selezionare o è evidenziato, ha la bella barra blu sotto e ho impostato gli attributi di testo per modificare il colore del testo per essere blu. C'è un codice extra per i divisori, ma penso che non sia correlato, quindi l'ho omesso.
Il mio problema è che in iOS 8 ci sono un paio di azioni che fanno diventare grigio lo sfondo del segmento e appaiono scadenti; Uno è quando cambi la tua selezione, la cella che hai toccato diventa grigia fino al completamento della transizione, e l'altra è che se tocchi e tieni premuto un segmento già selezionato, diventa grigio. Entrambi sembrano identici e possono essere visti sotto.
Alcuni pezzi extra di informazioni eventualmente rilevanti:
- Il
tintColor
per il segmentedControl è chiaro - Non sto sottoclasse
UISegmentedControl
- Non ho cambiato tutte le proprietà per
UISegmentedControl
utilizzando il suo proxy di aspetto - Sto usando immagini a 1 punto di larghezza per immagini di sfondo e e
UISegmentedControl
viene determinato automaticamente l'capInsets e piastrelle dell'immagine
sto trovando anche questo. Hai mai trovato una soluzione al tuo problema? – GraemeArthur
No. La cosa migliore che potevo fare era assicurarsi che accadesse pochissimo sul thread principale dopo aver cambiato le schede in modo che apparisse in modo non omogeneo per il minor tempo possibile. – Acey