Dziwne zachowanie z UISegmentedControl i UIAppearance
Ustawiam wygląd kontroli segmentowanej za pomocą tych instrukcji w delegacie aplikacji.
[[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];
Wynik jest w porządku. Tła i dzielniki są ustawiane prawidłowo, gdy wybieram dowolny z segmentów (segment Kolejność jest wybierany domyślnie, gdy aplikacja jest uruchamiana po raz pierwszy). Kiedy wybieram segment Release, jak widać poniżej, wszystko wygląda dobrze.
Problem polega na tym, że kiedy wychodzę z widoku, a następnie wracam do widoku (zapisuję wybrany indeks i ustawiam go w widoku viewDidLoad, aby ponownie wybrać segment), dzielnik jest ustawiany nieprawidłowo z nieznanego powodu.
Jeśli dotknę A-Z, a następnie Zwolnij, poprawi się. Ten błąd występuje tylko wtedy, gdy widok najpierw ładuje się, a wybrany segment był albo Release, albo A-Z. Dzielnik zawsze wygląda dobrze, gdy wybrana jest kolejność i ładuje się widok.
Rozmiary obrazu: dzielnik ma szerokość 2px (wszystkie 3 obrazy mają ten sam rozmiar), tła mają po 2 piksele szerokości.
Wszelkie pomysły lub wskazówki byłyby bardzo mile widziane, ciągnąłem za włosy przez ostatnie 10 godzin, próbując znaleźć rozwiązanie niedostępnego.