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 9

1 ответ:

Похоже, что: segmentedController.tintColor = [UIColor darkGrayColor]; решает вашу проблему.

Чтобы удалить "зависимость", подкласс UISegmentedControl и установить оттенок в конструкторе.

CustomSegmentedControl.m

- (id)initWithItems:(NSArray*)items {
    if( self = [super initWithItems:items] ) {
         self.tintColor = [UIColor darkGrayColor];
    }
    return self;
}