Это не ошибка. Глобальная тонировка работает для объектов, класс которых используется для тонирования. Если определенная схема оттенков объявлена для класса, тогда все элементы управления, принадлежащие этому классу, будут следовать схеме отображения класса, независимо от того, к какому виду они добавлены.
Я пробовал реализовать это & Я здесь с этим кодом.
Установить глобальный колеровка для UINavigationBar
в appDelegate
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
[[UINavigationBar appearance] setTintColor:[UIColor redColor]];
[[UINavigationBar appearance] setBarTintColor:[UIColor yellowColor]];
...
...
}
и я добавляю UISegmentControl
в UINavigationBar
, а также в tableView.tableHeaderView
в viewDidLoad
методе.
UISegmentedControl *segment = [[UISegmentedControl alloc]initWithItems:@[@"One", @"Two"]];
segment.frame = CGRectMake(self.view.frame.size.width/2-75, 0, 150, 40);
[self.navigationController.navigationBar addSubview:segment];
UISegmentedControl *tableSegment = [[UISegmentedControl alloc]initWithItems:@[@"One", @"Two"]];
tableSegment.frame = CGRectMake(self.view.frame.size.width/2-75, 0, 150, 40);
[self.navigationController.navigationBar addSubview:tableSegment];
tableView.tableHeaderView = tableSegment;
Это дает следующий результат. UISegmentControl
будет тонированное с глобальным подкрасить UINavigationBar
«s, если он будет добавлен в UINavigationBar
контейнер как подвид, в противном случае, он будет принимать синий цвет по умолчанию вне UINavigationBar
как в заголовке UITableView
сейчас добавление определенного оттенка цвета для UISegmentedControl
, как
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
[[UINavigationBar appearance] setTintColor:[UIColor redColor]];
[[UINavigationBar appearance] setBarTintColor:[UIColor yellowColor]];
[[UISegmentedControl appearance] setTintColor:[UIColor brownColor]];
...
...
}
``
это дает это, UISegmentControl
зависит от его глобального оттенка, независимо от его местоположения (например, ранее в UINavigationBar
& UITableViewHeader
).Это
Однако TinitColor из UInavigationBar
по-прежнему применяется на leftBarButtonItem
, потому что не существует глобальная система Оттенок объявлена для UIBarButtonItem
, поэтому она принятия tintColor
контейнера он добавляется.
Добавление более кода Уточнить
- Использования глобальных подкрашивать
UISegmentedControl
& никакой другой глобальной колеровки.
[[UISegmentedControl appearance] setTintColor:[UIColor colorWithRed:39.0/255.0 green:64.0/255.0 blue:112.0/255.0 alpha:1]];
Результат: Вы можете увидеть контроль сегмента, но обратите внимание на BackButton, который, имеющий оттенок по умолчанию UINavigationBar
- Использование глобальной подкрашивать
UISegmentedControl
& UINavigationBar
[[UISegmentedControl appearance] setTintColor:[UIColor colorWithRed:39.0/255.0 green:64.0/255.0 blue:112.0/255.0 alpha:1]];
[[UINavigationBar appearance] setTintColor:[UIColor colorWithRed:39.0/255.0 green:64.0/255.0 blue:112.0/255.0 alpha:1]];
Результат: Вы можете увидеть контрольный сегмент оттенок & также заметить BackButton, который оказывает Глобальный оттенок UINavigationBar
Я также сделал по умолчанию - UISegmentedControl
. Если вы получаете какой-либо другой результат с этим кодом, то в вашем коде должно быть что-то особенное.
Я надеюсь, что это поможет.
Уход за разъяснением голоса? – DogCoffee