ChenYilong / CYLTabBarController

[EN]It is an iOS UI module library for adding animation to iOS tabbar items and icons with Lottie, and adding a bigger center UITabBar Item. [CN]【中国特色 TabBar】一行代码实现 Lottie 动画TabBar,支持中间带+号的TabBar样式,自带红点角标,支持动态刷新。【iOS13 & Dark Mode & iPhone XS MAX supported】
MIT License
6.91k stars 1.45k forks source link

v1.27.0 support iOS13 Dark Mode #386

Closed ChenYilong closed 5 years ago

ChenYilong commented 5 years ago

enter image description here



CYLTabBarController 【iOS13 Dark Mode版本】v1.27.0 已经发布,更新日志

效果图

原理解析

在 iOS13 上,适配红点功能:避免红点颜色受 iOS13 TabBarItem 内引入的毛玻璃效果影响。

在iOS13上,如果TabBar或者TabBarItem未设置如下几个相关方法:

是否设置过,结构对比图如下:

从图上可以看出:未设置时,系统会给处于未选中(unselected)状态的 TabBarItem 加一个毛玻璃效果,为灰色,以此来充当UnselectedItemTintColor 保证在 Dark Mode 中显得正常。

这个改动会导致:

解决办法:

CYLTabBarController自动移除的逻辑如下:

当 CYLTabBarController 发现有毛玻璃效果,就内部默认设置 setUnselectedItemTintColor ,颜色为未选中 Item 的 Label 颜色,无 label 时取默认值 systemGrayColor


隐藏TabBar顶部分割线的实现,就是在原有基础上把修改ShadowImageView的透明度,改为修改hidden属性。


ChenYilong commented 5 years ago
//去除 TabBar 自带的顶部阴影
需要使用 -[CYLTabBarController hideTabBarShadowImageView] 

见README