2016-03-09 1 views
1

я делаю следующий код, чтобы сделать общесистемное изменение темы в моем приложение для кнопки цветов:Как изменить UIWindow window.tintColor на значение по умолчанию после его изменения?

UIWindow *window = [[[UIApplication sharedApplication] windows] lastObject]; 
window.tintColor = [UIColor themeColorNamed:@"barAndButtonTextColor"]; 

Вопрос заключается в том, как я могу превратить его обратно в цвет по умолчанию? Я попытался это не повезло:

window.tintColor = nil; 

Когда я пытаюсь получить UIColor по умолчанию, когда приложение первоначальной загрузке и сохранить его, он возвращается в nil в моем AppDelegate:

UIColor *myColor = window.tintColor; 

Любые идеи о том, как я могу это решить? Я не хочу жестко кодировать цвет, потому что кто знает, что может измениться в будущих версиях iOS.

ответ

2

Установка нулевого значения - это правильный способ восстановления значения по умолчанию.

Я предполагаю, что lastWindow уже не то же самое окно, когда вы пытаетесь восстановить цвет оттенков по умолчанию. Система может иметь дополнительные окна по другим причинам.

Вместо использования lastObject в windows массиве, я бы использовал keyWindow для установки его оба раза:

UIWindow *window = [UIApplication sharedApplication].keyWindow; 
+0

Было бы интересно проверить, сколько окон есть (т. Е. '[[[UIApplication sharedApplication] windows] count]'), и в котором хранится его контроллер корневого представления своего приложения. Я знаю, что системные предупреждения представлены в отдельном окне поверх приложения, а также вы можете иметь более одного окна при поддержке внешних мониторов, но никогда не экспериментировали с этим ... –

1

Вы можете попробовать

window.tintColor = [[UIView new] tintColor]; 

Я делаю это в application:didFinishLaunchingWithOptions:, когда я инициализируйте мое окно, потому что по какой-то причине цвет оттенка окна по умолчанию равен nil.

Каким-то образом, несмотря на то, что я новичок, я никогда не сталкивался с какой-либо проблемой, но у меня были пользователи моего приложения, которые отправили мне скриншоты контрольных сигналов и листов действий, где текст кнопки невидим, и я уверен, что он должен быть связан цвет оттенка окна был равен нулю.

Смежные вопросы