【发布时间】:2017-09-25 13:31:05
【问题描述】:
menuView 必须具有每个人的默认颜色。但是任何使用 RGB 滑块的应用程序设置都可以更改 menuView 的颜色。 所以我想用黄色设置默认颜色,并设置滑块改变颜色menuView。并且换色后可以保存。
import UIKit
class ViewController: UIViewController {
let defaults = UserDefaults.standard
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var menuView: UIViewX!
var redval = Float()
var greenval = Float()
var blueval = Float()
@IBOutlet weak var NewMessage: UIButton!
@IBOutlet weak var Camera: UIButton!
@IBOutlet weak var NewPost: UIButton!
var tableData: [Model] = []
override func viewDidLoad() {
super.viewDidLoad()
self.menuView.backgroundColor = UIColor(red: CGFloat(redval), green: CGFloat(greenval), blue: CGFloat(blueval), alpha: 0.45)
}
}
用字符串
self.menuView.backgroundColor = UIColor(red: CGFloat(redval), green:
CGFloat(greenval), blue: CGFloat(blueval), alpha: 0.45)
我可以使用应用程序通过滑块 RGB 更改颜色,但现在我想先将默认颜色强加为可以更改的颜色。
更改颜色的代码滑块
import UIKit
class ViewSettings: UIViewController {
@IBOutlet var redslider: UISlider!
@IBOutlet var greenslider: UISlider!
@IBOutlet var blueslider: UISlider!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func change(_ sender: AnyObject) {
self.performSegue(withIdentifier: "ChangeColor", sender: self)
}
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "ChangeColor" {
let destanitaion = segue.destination as! ViewController
destanitaion.redval = redslider.value
destanitaion.blueval = blueslider.value
destanitaion.greenval = greenslider.value
}
}
}
【问题讨论】:
-
一种直接的方法是将每个红色、绿色、蓝色值保存为
Double中的UserDefaults。然后提取每个组件并重建UIColor。您也可以创建一个UserDefaults扩展名来使这个更干净。 -
你能举个例子吗?我想要的默认颜色是 #colorLiteral(red: 0.9966391622, green: 1, blue: 0.2095825737, alpha: 0.7946946448) /* #f2f0f0 */ @Paolo
-
UP @Paolo 查看更新