嗨,我是ios dev的新手,我正在尝试制作按钮,这些按钮位于我的"设置视图控制器"中,可以更改整个应用程序的颜色主题(即背景颜色(。下面的代码目前在appDelegate类中,因为我发现它非常适合这个目的。
所以现在我不知道如何让"设置视图控制器"中的按钮激活appDelegate中的代码。我应该为事件设置一个监听器吗?使用闭包?
感谢您的帮助。如果可能的话,请发布代码解决方案,这真的很有帮助!:(
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
UINavigationBar.appearance().tintColor = UIColor.whiteColor()
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName:UIColor.whiteColor()]
Style.greenTheme()
}
我使用的解决方案:
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()
}
}
appDelegate专门用于设置整个应用程序的选项。如果你想在点击按钮时做这些事情,你只需要将这些代码行添加到与你的界面相连的按钮的IBAction中:
@IBAction func greenButtonTapped(sender: AnyObject) {
<#Code to be run when button tapped#>
}
然后只需将它连接到您的UI元素,您就可以完成所有设置。
所以现在我不知道如何让"设置视图控制器"中的按钮激活appDelegate 中的代码
application:didFinishLaunchingWithOptions:
中的代码在应用程序启动时自动运行。因此,这是配置外观代理的正确位置。没有什么可以"激活"的。
如果稍后运行其他代码来设置外观代理,请小心。这不是一件正常的事情。您不能使用外观代理来更改现有界面元素的外观。当您的"主题"发生更改时,您需要手动更改现有界面。