Как реализовать DarkMode Into в приложении Swift - PullRequest
1 голос
/ 14 июля 2020

извините, если этот вопрос был задан, но я не смог найти правильный ответ в stackOverFlow, поэтому я спрашиваю ...

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

Вот изображение, иллюстрирующее проблему: https://imgur.com/a/h4A3zOZ (нельзя загрузить сюда, потому что он слишком большой).

Также вот мой код:

// MARK: - Premium Section - DarkMode + Graph:
    @IBAction func darkModeSwitch(_ sender: UISwitch) {
        let current = sender.isOn ? Theme.dark : Theme.light
        
        
        if #available(iOS 13.0, *)  {
//            overrideUserInterfaceStyle = UIUserInterfaceStyle(rawValue: current.stateMode)!
            //STEP1: Saving User Defaults Switcher:
            saveSwitchToggleDarkMode(switcherState: sender.isOn)
                //STEP2: Setting UI Colors Of Settings View:
                self.tableView.backgroundColor = current.backgroundColor
                ///Setting up the barTint Color:
                self.navigationController?.navigationBar.barTintColor = current.barTintColor
                ///Setting up the title text color:
                self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor:current.textColor]
                ///Changing back color in navigation controller:
                self.navigationController?.navigationBar.backItem?.backBarButtonItem?.tintColor = current.backItemColor
                
        }
    }

Ответы [ 2 ]

0 голосов
/ 14 июля 2020

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

if #available(iOS 13, *) {
   UIApplication.shared.delegate?.window??.overrideUserInterfaceStyle = .dark
}
0 голосов
/ 14 июля 2020

Альтернативный (и, возможно, более простой) метод реализации темного режима - использовать функцию iOS темного режима, которую вы можете активировать в настройках. Если вы хотите реализовать это, вы можете создать собственный набор цветов, перейдя в свои активы .xcassets и нажав знак плюса внизу -> новый набор цветов. В инспекторе атрибутов назовите свой цвет под именем и в разделе «Внешний вид» выберите «Любой, Светлый, Темный». Теперь у вас будет место для трех разных цветов. В разделе «Светлый» установите цвет светлого режима, на темный - цвет темного режима.

Your settings must look something like this

Then on the place where you wish to implement this color,you can change the color to your custom color in the storyboard like so :-

TestColor-Раскадровка

или вы можете изменить его в коде, например,

myButton.backgroundColor = UIColor(named: "TestColor")

Когда пользователь запускает темный режим через свой центр управления или настройки, приложение также автоматически изменится соответственно. Вы можете проверить это, перейдя в настройки -> Разработчик -> Темный внешний вид, или перейдя в Функции -> Переключить внешний вид, или просто нажав Shift + Command + A

Однако этот метод означает, что у вас не будет независимого темного режим, потому что он будет срабатывать только в том случае, если на самом устройстве включен темный режим.

...