您好我是ios dev的新手,我正在尝试制作按钮,这些按钮位于我的“设置viewController”中,更改整个应用程序的颜色主题(即背景颜色)。 下面的代码目前在appDelegate类中,因为我发现它可以很好地用于此目的。
所以现在我不确定如何让我的'settings viewController'中的按钮激活appDelegate中的代码。我应该为活动设置一个监听器吗?使用闭包?
感谢任何帮助。如果可能的话,请发布代码解决方案,这确实有帮助!:)
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
UINavigationBar.appearance().tintColor = UIColor.whiteColor()
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName:UIColor.whiteColor()]
Style.greenTheme()
}
答案 0 :(得分:1)
我使用的解决方案:
extension UIColor{
@nonobjc static var clr_blue: UIColor!
static func initWithColorScheme(cs: ColorScheme){
switch cs{
case .Default:
clr_blue = blueColor()
case .Custom:
clr_blue = UIColor(hue: 0.6, saturation: 0.85, brightness: 1, alpha: 1)
}
}
}
enum ColorScheme{
case Default, Custom
}
根据需要创建任意数量的自定义颜色和配色方案。用法:
UIColor.clr_blue
但请勿忘记在application:didFinishLaunchingWithOptions:
内初始化您的UIColor,如下所示:UIColor.initializeWithColorScheme(.Custom)
要更改当前UIViewController的颜色方案而不需要重新启动,请将此方法添加到UIViewController:
func changeSchemeTo(cs: ColorScheme){
UIColor.initializeWithColorScheme(cs)
for subview in self.view.subviews{
subview.setNeedsDisplay()
}
}
答案 1 :(得分:0)
appDelegate专门用于设置整个应用的选项。如果你想在点击按钮时做这些事情,你只需要将这些代码行添加到IBAction中,用于连接到你的界面的按钮:
@IBAction func greenButtonTapped(sender: AnyObject) {
<#Code to be run when button tapped#>
}
然后只需将其连接到您的UI元素即可。
答案 2 :(得分:0)
所以现在我不知道如何让我的'settings viewController'中的按钮激活appDelegate中的代码
application:didFinishLaunchingWithOptions:
中的代码会在您的应用启动时自动运行 。因此,这是配置外观代理的正确位置。没有什么可以“激活”。
如果您稍后运行其他代码来设置外观代理,请小心。这不是正常的事情。您无法使用外观代理更改现有界面元素的外观。当“主题”发生变化时,您需要手动更改现有界面。