如何更改应用程序颜色主题



嗨,我是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:中的代码在应用程序启动时自动运行。因此,这是配置外观代理的正确位置。没有什么可以"激活"的。

如果稍后运行其他代码来设置外观代理,请小心。这不是一件正常的事情。您不能使用外观代理来更改现有界面元素的外观。当您的"主题"发生更改时,您需要手动更改现有界面。

最新更新