Tencent / QMUI_iOS

QMUI iOS——致力于提高项目 UI 开发效率的解决方案
http://qmuiteam.com/ios
Other
7.11k stars 1.39k forks source link

[UIKit Bug] 使用 UITabBarAppearance 将 UITabBarItem 选中时的字体设置为 bold 则无法完整显示 title #1286

Closed MoLice closed 3 years ago

MoLice commented 3 years ago

Bug 表现

  1. 通过 UITabBarAppearance.stackedLayoutAppearance.selected.titleTextAttributes,指定 NSFontAttributeName 为加粗的字体。
  2. 在某个 vc 底部添加一个 UITabBar 并为其设置2个及以上的 UITabBarItem,必须包含英文、数字(因为系统默认使用非等宽字体,只有英文、数字的加粗/非加粗会明显影响 label 宽度)。
  3. 默认选中其中一个 UITabBarItem。
  4. 如果是 iOS 13,进入这个 vc 时即可观察到被选中的 item 的文字显示不全,并且不管怎么操作都一直这样。
  5. 如果是 iOS 14,进入该 vc 时一切正常,但回到桌面再重新唤醒 App,选中的 item 的文字显示不全。

截图

空项目 Demo TestTabBarItemSelected.zip

其他信息

MoLice commented 3 years ago

系统 UITabBarItem title 的问题太多了,之前的还包括:

  1. [UIKit Bug] iOS 13 通过 UITabBarAppearance 为 tabBarItem 设置字号大于10时,item 的文字被截断
  2. [UIKit Bug] iOS 14 修改 UITabBarAppearance.inlineLayoutAppearance.normal.titleTextAttributes[NSForegroundColorAttributeName] 会导致 UITabBarItem 文字无法完整展示

加上当前 issue,总共3个 UIKit Bug,问题原因都类似,都是系统在处理 UITabBarItem.title 时对 font、sizeThatFits 的考虑不周导致的,本次 issue 的修改方式把这3个都融合在一起,一段代码解决,之前为 #740、#1110 分别写的代码也在本次修复里被去除。

将会跟随 QMUI 新版发布,届时请业务项目留意相关问题。

jiasongs commented 3 years ago

系统 UITabBarItem title 的问题太多了,之前的还包括:

1. [[UIKit Bug] iOS 13 通过 UITabBarAppearance 为 tabBarItem 设置字号大于10时,item 的文字被截断](https://github.com/Tencent/QMUI_iOS/issues/740)

2. [[UIKit Bug] iOS 14 修改 UITabBarAppearance.inlineLayoutAppearance.normal.titleTextAttributes[NSForegroundColorAttributeName] 会导致 UITabBarItem 文字无法完整展示](https://github.com/Tencent/QMUI_iOS/issues/1110)

加上当前 issue,总共3个 UIKit Bug,问题原因都类似,都是系统在处理 UITabBarItem.title 时对 font、sizeThatFits 的考虑不周导致的,本次 issue 的修改方式把这3个都融合在一起,一段代码解决,之前为 #740、#1110 分别写的代码也在本次修复里被去除。

将会跟随 QMUI 新版发布,届时请业务项目留意相关问题。

还有这个,https://github.com/Tencent/QMUI_iOS/issues/1030 实测在QMUI v4.2.3里也会出现,业务上转换成普通的UIColor就没问题了。

图片
MoLice commented 3 years ago

已发布 4.3.0 修复该问题。