В iOS 6/7 я использовал UISegmentedControl
с фоновыми изображениями, чтобы создать такой эффект:
Я выполнил это, установив фоновое изображение для UISegmentedControl
для каждого из стандартных состояний, например:
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];
Когда сегмент становится выделенным или подсвечивается, он имеет симпатичную синюю полосу внизу, и я устанавливаю атрибуты текста, чтобы изменить цвет текста на синий. Там есть дополнительный код для разделителей, но я думаю, что это не связано, поэтому я опустил его.
Моя проблема в том, что в iOS 8 есть несколько действий, которые заставляют фон сегмента седеть и выглядеть плохо; Когда вы меняете свой выбор, ячейка, которую вы набрали, становится серым до тех пор, пока переход не завершится, а другой - если вы нажмете и удерживаете уже выбранный сегмент, он станет серым. Оба они выглядят одинаково и могут быть видны ниже.
Некоторые дополнительные фрагменты возможной информации:
-
tintColor
для segmentedControl ясен - Я не подклассы
UISegmentedControl
- Я не изменил никаких свойств для
UISegmentedControl
, используя его внешний прокси-сервер - Я использую 1-точечные изображения для фоновых изображений, а
UISegmentedControl
автоматически определяет capInsets и строит изображение