我有一个MainView控制器和第二个SettingsView控制器。 在SettingsView控制器中,我让用户选择背景颜色,保存并移回MainView Controller。 我使用导航控制器segue从Main移动到Settings并使用dismissViewControllerAnimated移回Main。
我的问题是当我为主视图设置背景时,它没有显示出来。 但如果我关闭并重新启动应用程序,那么它会正确显示。 是因为主视图已经打开而没有刷新回来吗?
以下是代码:
设定:
let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject("theme", forKey: "BackgroundColor")
主:
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor.clearColor()
var backgroundLayer = Util.GetTheme()
backgroundLayer.frame = view.frame
view.layer.insertSublayer(backgroundLayer, atIndex: 0)
}
答案 0 :(得分:1)
根据您的要求,您需要将用于更改颜色的代码移动到viewWillAppear
方法。因为viewDidLoad在加载到内存时只会被调用一次。每次它到达前台或对用户可见时,都会调用viewWillAppear
。
但是在哪里保存所选颜色并应用保存的颜色?
答案 1 :(得分:0)
尝试此代码:
class Colors {
let colorTop = UIColor(red: 192.0/255.0, green: 38.0/255.0, blue: 42.0/255.0, alpha: 1.0).CGColor
let colorBottom = UIColor(red: 35.0/255.0, green: 2.0/255.0, blue: 2.0/255.0, alpha: 1.0).CGColor
let gl: CAGradientLayer
init() {
gl = CAGradientLayer()
gl.colors = [ colorTop, colorBottom]
gl.locations = [ 0.0, 1.0]
}
}