【发布时间】:2017-05-29 21:56:18
【问题描述】:
我创建了一个开关,让用户可以更改背景颜色(深色模式)。这仅适用于与代码链接的视图控制器。我将如何设置它,以便当开关被激活为暗模式或亮模式时,我的应用程序中的每个视图控制器都会改变,而不仅仅是一个。这是我的代码:
import UIKit
类 DarkMode: UIViewController {
@IBOutlet var DarkSwitch: UISwitch!
@IBOutlet var LightSwitch: UISwitch!
var DarkisOn = Bool()
var LightisOn = Bool()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let DarkDefault = UserDefaults.standard
DarkisOn = DarkDefault.bool(forKey: "DarkDefault")
let LightDefault = UserDefaults.standard
LightisOn = LightDefault.bool(forKey: "LightDefault")
if (DarkisOn == true) {
DarkSwitch.isOn = true
LightSwitch.isOn = false
//run dark theme
DarkTheme()
}
if (LightisOn == true) {
DarkSwitch.isOn = false
LightSwitch.isOn = true
//run light theme
LightTheme()
}
}
func DarkTheme() //dark colour
{
self.view.backgroundColor = UIColor(red: 0.1, green: 0.1, blue: 0.1, alpha: 1.0)
}
func LightTheme() //light colour
{
self.view.backgroundColor = UIColor(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0)
}
@IBAction func DarkAction(_ sender: Any)
{
DarkSwitch.isOn = true
LightSwitch.isOn = false
//run dark theme func
DarkTheme()
let DarkDefault = UserDefaults.standard
DarkDefault.set(true, forKey: "DarkDefault")
let LightDefault = UserDefaults.standard
LightDefault.set(false, forKey: "LightDefault")
}
@IBAction func LightAction(_ sender: Any)
{
DarkSwitch.isOn = false
LightSwitch.isOn = true
//run light theme func
LightTheme()
let DarkDefault = UserDefaults.standard
DarkDefault.set(false, forKey: "DarkDefault")
let LightDefault = UserDefaults.standard
LightDefault.set(true, forKey: "LightDefault")
}
}
【问题讨论】:
-
可能最简单的方法是将它们全部从一个覆盖 viewDidLoad 的子类中继承,代码如下。
-
这个tutorial 可能会对你有所帮助。
-
看在上帝的份上,请阅读风格指南。我什至不知道从哪里开始。
-
Oscar Apeland - 我刚开始你,你这个精英怪人。如果我不问问题,我怎么能学到……“看在上帝的份上”,如果你对我的问题无话可说,那就去做吧。
标签: ios iphone mobile swift3 viewcontroller