Sto impostando l'aspetto del controllo segmentato tramite queste istruzioni nel delegato dell'app.Comportamento strano con UISegmentedControl e UIAppearance
[[UISegmentedControl appearance] setBackgroundImage:[[UIImage imageNamed:@"segmentation_normal.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0 , 0, 0)] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setBackgroundImage:[[UIImage imageNamed:@"segmentation_selected.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0 , 0, 0)]
forState:UIControlStateSelected barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setDividerImage:[UIImage imageNamed:@"segmentation_divider_NormalNormal.png"] forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setDividerImage:[UIImage imageNamed:@"segmentation_divider_NormalSelected.png"] forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateSelected barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setDividerImage:[UIImage imageNamed:@"segmentation_divider_SelectedNormal.png"] forLeftSegmentState:UIControlStateSelected rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
Il risultato è soddisfacente. Gli sfondi e i divisori sono impostati correttamente quando seleziono uno dei segmenti (il segmento Ordine è selezionato per impostazione predefinita all'avvio dell'app). Quando seleziono il segmento di rilascio come puoi vedere sotto, tutto sembra a posto.
Il problema è quando esco della vista poi di nuovo alla vista (posso conservare l'indice selezionato e metterlo nel viewDidLoad per selezionare nuovamente il segmento), il divisore è impostato in modo non corretto per qualche sconosciuta ragionare.
Se io batto su A-Z poi rilasciare, si corregge. Questo bug si verifica solo quando la vista viene caricata per la prima volta e il segmento selezionato è Release o A-Z. Il divisore appare sempre bene quando viene selezionato Ordine e la vista viene caricata.
Dimensioni immagine: il divisore è largo 2 px (tutte e 3 le immagini hanno le stesse dimensioni), gli sfondi sono larghi 2 px ciascuno.
Qualsiasi idea o suggerimento sarebbe molto apprezzata, mi sono tirato i capelli per le ultime 10 ore cercando di trovare una soluzione a non disponibile.
Chiama il metodo 'setNeedsDisplay' di' UISegmentedControl' dopo aver impostato l'indice selezionato di 'UISegmentedControl' in' viewDidLoad'. Forse questo risolverà il problema. –
Non ha funzionato. Grazie comunque! –
Anche io sto vedendo questo problema. Accidenti :( – runmad