Swift ViewController不刷新背景颜色

时间:2015-05-09 07:02:37

标签: ios swift themes refresh viewcontroller

我有一个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)
    }

2 个答案:

答案 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]
}
}