如何实现iOS 中的APP主题切换

如题所述

  全局修改控件的颜色

  UIView 中有一个 tintColor 属性,该属性会在 view hierarchy 中传递下去。比如 window 的 tintColor 为红色,那么其 subviews 的 tintColor 都会是红色的。并且还可以通过 UIAppearance 中的来对控件进行全局外观设置:

  UIButton.appearance().tintColor = UIColor.magentaColor()

  在 iOS 9 中还新增了一个修改「局部外观」的 API~

  UIButton.appearanceWhenContainedInInstancesOfClasses([MyView.self]).tintColor = UIColor.cyanColor()

  修改图片的颜色

  当然 app 中除了纯色的控件之外还有各种图片。 UIImage 有一项属性叫做 renderingMode ,可以设置为:

  1)AlwaysOriginal让图片显示为应有的颜色。


  2)AlwaysTemplate使图片显示为模版模式,无视其颜色。


  3)Automatic

  这项是默认的。大多数情况下一张图片放在系统控件中会显示其应有的颜色,但有的情况下其颜色会被无视,比如在 UITabBarItem 中的图片。

  利用这个属性我们就可以将 app 中的图片也修改为配合主题的颜色:let templateImage = image?.imageWithRenderingMode(.AlwaysTemplate)

  templateImage.tintColor = myColor()

  但每次使用图片都这样代码设置一次又很麻烦,不过幸运的是我们可以直接在 Assets.xcassets 中设置图片的属性:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-03-27
实现iOS中的APP主题切换的方法:
1、全局修改控件的颜色
UIView 中有一个 tintColor 属性,该属性会在 view hierarchy 中传递下去。比如 window 的 tintColor 为红色,那么其 subviews 的 tintColor 都会是红色的。
并且还可以通过 UIAppearance 中的来对控件进行全局外观设置:
UIButton.appearance().tintColor = UIColor.magentaColor()
2、修改图片的颜色
当然 app 中除了纯色的控件之外还有各种图片。 UIImage 有一项属性叫做renderingMode ,可以设置为
AlwaysOriginal让图片显示为应有的颜色。
AlwaysTemplate使图片显示为模版模式,无视其颜色。
Automatic
这项是默认的。大多数情况下一张图片放在系统控件中会显示其应有的颜色,但有的情况下其颜色会被无视,比如在 UITabBarItem 中的图片。
利用这个属性我们就可以将 app 中的图片也修改为配合主题的颜色
相似回答