iOS 中如何实现 App 主题切换


之前看网易音乐 for iOS 有一版更新之后提供了主题切换的功能,其颜色还能够让用户自定义。当时觉得挺好玩的,就感觉要做很多工作的样子。

但最近在刷《 Programming iOS 9 》才知道有很简单的实现方式~

全局修改控件的颜色

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 ,可以设置为

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

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

  • Automatic

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

利用这个属性我们就可以将 app 中的图片也修改为配合主题的颜色啦~

let templateImage = image?.imageWithRenderingMode(.AlwaysTemplate)
templateImage.tintColor = myColor()


但每次使用图片都这样代码设置


一次又很麻烦,不过幸运的是我们可以直接在 Assets.xcassets 中设置图片的属性~


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值