Мой вопрос вращается вокруг различия 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 иметь черный полупрозрачный стиль - поддержание очевидного различия между выбранными и отменявшими сегментами.
Похоже на то: сегментController.tintColor = [UIColor darkGrayColor];
решает вашу задачу.
Для удаления "зависимости", подкласс UISegmentedControl и установки оттенка в конструкторе.
CustomSegmentedControl.m
- (id)initWithItems:(NSArray*)items {
if( self = [super initWithItems:items] ) {
self.tintColor = [UIColor darkGrayColor];
}
return self;
}