2017-02-16 5 views
0

В настоящее время я работаю над созданием статьи. Он имеет функцию режима дневного/ночного чтения. Цвет фона приложения должен быть черного цвета для ночного режима, а компонент переднего плана должен быть белого цвета. Я создал категорию для UIView, UILabel, UIButton и UITextView, но я не знаю, что это правильный подход или нет. Пожалуйста, предложите мне что-нибудь.Дневной режим в приложении iOS

Как достичь/реализовать режим «День/Ночь» в приложении iOS?

+0

Вы можете использовать эту ссылку https://www.raywenderlich.com/108766/uiappearance-tutorial – Sunny

ответ

0

Я думаю, что лучше всего будет использовать прокси-серверы, а не категории. Все, что подклассы UIView (так в основном, любой пользовательский интерфейс) выведет это вам.

Просто установите этот желаемый внешний вид, и все элементы наследуют это по умолчанию. Возьмем следующий пример:

[[UIButton appearance] setBackgroundColor:[UIColor blackColor]]; 
[[UIButton appearance] setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 

Все UIButtons теперь будут иметь эти атрибуты по умолчанию.

Вы можете просто выполнить проверку, когда ваше приложение запускается в течение дня, а затем установите внешний вид пользовательского интерфейса на основе этого.

0

Если вы сделали это, например: UILabel.appearance().textColor = UIColor.white, это хорошо. Просто не забудьте установить ключ UserDefaults, когда темный режим включен, так что, когда приложение будет перезаписано, он сохранит предыдущий вид. Кроме того, вы можете захотеть установить черный цвет для навигации контроллера, панели вкладок и клавиатуры и белый для строки состояния элементов и названий для навигации контроллера и панели вкладок (в AppDelegate, didFinishLaunchingWithOptions:

UINavigationBar.appearance().barTintColor = UIColor.black 
UIApplication.shared.statusBarStyle = .lightContent 
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName:UIColor.white] 
UITabBar.appearance().barTintColor = UIColor.black 
0

Я осуществил подобное поведение создав диспетчер внешнего вида, который может быть настроен с различными цветовыми схемами. И в нем у меня есть такие функции, как: -(UIColor*) colorForLabelInHomeScreen; После этого вам понадобится пользователь по умолчанию, чтобы сохранить вашу текущую цветовую схему и способ перезагрузить ваши экраны после пользователя изменяет цветовые схемы (увольнение уведомления, потому что его отношение «один к большому» является хорошим выбором).

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

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

  • Нет связанных вопросов^_^