![](/img/trans.png)
[英]Swift: Setting ViewController background color from AppDelegate
[英]Swift ViewController doesn't refresh background color
我有一個MainView Controller和另一個SettingsView Controller。 在SettingsView控制器中,我讓用戶選擇背景色,將其保存並移回MainView Controller。 我使用Navigation 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)
}
根據您的要求,您需要將用於更改顏色的代碼移動到viewWillAppear
方法。 因為viewDidLoad在加載到內存時將僅被調用一次。 viewWillAppear
每次到達前台或對用戶可見時都會被調用。
但是在哪里保存所選顏色並應用保存的顏色呢?
試試這個代碼:
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]
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.