Uisegmentedcontrol цвет в UIToolbar
Мой вопрос вращается вокруг различия в UISegmentedController на UINavigationBar против UIToolbar. Если я помещаю UISegmentedControl в панель навигации следующим образом:
navigationBar.barStyle = UIBarStyleBlackTranslucent;
Все хорошо. UISegmentedControl идентифицирует выбранный параметр с немного более темным черным цветом. Но если я помещаю UISegmentedControl на UIToolbar, он не получает цвет или прозрачность с панели инструментов. Если я вручную устанавливаю tintColor, UISegmentedControl не различает выбран и не выбран больше.
По общему признанию, необходимо обернуть UISegmentedControl в UIBarButtonItem, прежде чем опускаться на UIToolbar. Мне интересно, является ли это частью причины, по которой UISegmentedControl выглядит неправильно (синий на полупрозрачном черном фоне).
toolbar.barStyle = UIBarStyleBlackTranslucent;
UIBarButtonItem *item = [[[UIBarButtonItem alloc] initWithCustomView:segmentedControl];
NSArray *toolbarItems = [[NSArray alloc] initWithObjects:item,nil];
toolbar.items = toolbarItems;
Конечно, мой код не совсем такой, как написано, так как я использую внутреннюю панель навигации и контроллера, но общая логика та же. Я не уверен, как сделать UISegmentedControl на UIToolbar иметь черный полупрозрачный стиль-сохраняя очевидное различие между выбранными и невыбранными сегментами.
1 ответ:
Похоже, что:
segmentedController.tintColor = [UIColor darkGrayColor];
решает вашу проблему.Чтобы удалить "зависимость", подкласс UISegmentedControl и установить оттенок в конструкторе.
CustomSegmentedControl.m
- (id)initWithItems:(NSArray*)items { if( self = [super initWithItems:items] ) { self.tintColor = [UIColor darkGrayColor]; } return self; }