如何使用方案来更改ui元素的颜色?(Xcode,swift)



我有五种不同的方案:调试、发布、暂存、生产和测试。我已经把它们都安排好了。

我想根据指定的方案更改标签的文本和视图的背景色。

AppDelegate中,我实现了以下方法:

func setDomainEnv() {
#if Debug
serverEndPointURL = "www.debug.com"
var fancyBackgroundColor = UIColor(hue: 0.007, saturation: 0.589, brightness: 0.572, alpha: 1.0)
#elseif Testing
serverEndPointURL = "www.testing.com"
var fancyBackgroundColor = UIColor(hue:0.971, saturation:0.715, brightness:1, alpha:1)
#elseif Staging
serverEndPointURL = "www.staging.com"
var fancyBackgroundColor = UIColor(hue: 0.373, saturation: 0.602, brightness: 0.863, alpha: 1.0)
#elseif Release
serverEndPointURL = "www.release.com"
var fancyBackgroundColor = UIColor(hue: 0.571, saturation: 1.0, brightness: 1.0, alpha: 1.0)
#elseif Production
serverEndPointURL = "www.production.com"
var fancyBackgroundColor = UIColor(hue: 0.66, saturation: 0.516, brightness: 0.871, alpha: 1.0)
#endif
}

该方法在application didFinishLaunchingWithOptions方法中被调用:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
self.setDomainEnv()
return true
}

我还设置了一个名为Constants的文件,用于存储我的变量:

import Foundation
import UIKit
var serverEndPointURL = "www.apple.com"
var fancyBackgroundColor = UIColor.black

在我的ViewController中,我在viewDidLoad方法中使用这些变量:

override func viewDidLoad() {
super.viewDidLoad()
label.text = serverEndPointURL
self.view.backgroundColor = fancyBackgroundColor
}

但是,唯一更改的是标签的文本。背景颜色不会根据指定的方案而更改它始终为黑色(存储在Constants文件中的值(。它不会基于所选择的方案而改变。有什么想法吗?

您正在定义一个新的变量fancyBackgroundColor,而不是更改常量文件中已存在的fancyBackgroundColor的值。您应该删除setDomainEnv方法中的var关键字。

最新更新