【问题标题】:Swift ViewController doesn't refresh background colorSwift ViewController 不刷新背景颜色
【发布时间】:2015-07-20 03:36:39
【问题描述】:

我有一个 MainView 控制器和第二个 SettingsView 控制器。 在 SettingsView 控制器中,我让用户选择背景颜色,将其保存并移回 MainView 控制器。 我使用 Navigation 控制器 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)
    }

【问题讨论】:

    标签: ios swift themes refresh viewcontroller


    【解决方案1】:

    试试这个代码:

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

    【讨论】:

      【解决方案2】:

      根据您的要求,您需要将更改颜色的代码移至viewWillAppear 方法。由于 viewDidLoad 在加载到内存时只会被调用一次。 viewWillAppear 将在每次进入前台或对用户可见时被调用。

      但是您在哪里保存选定的颜色并应用保存的颜色?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-10-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多