4.7.0
综述
随着 QMUI 最初的几位老人家各奔天涯,历经7年自费集资的老官网 qmuiteam.com在不久的将来费用消耗完就不再维护了,以后都在 GitHub。对应地,依附于官网的自动上报统计 SendAnalyticsToQMUITeam
也在这个版本删除,借此也跟大家分享下统计数据(毕竟在座的各位都参与其中)。
截止至2023-7-24,QMUI iOS 累计接入6w项目(以Bundle Id为维度),日活跃项目 1.6k+,月活跃项目 4.3k+。
这个版本主要是累积这段时间的修修补补。
新增功能
- 令
qmui_outsideEdge
对UIBarButtonItem.customView
也生效,以后你可以让导航栏按钮的响应区域扩大到导航栏之外了。 CALayer(QMUI)
增加属性qmui_maskPathBlock
用于快捷添加遮罩。CALayer(QMUI)
增加属性qmui_evenOddMaskPathBlock
用于快捷镂空一个区域。NSArray(QMUI)
增加方法qmui_compactMapWithBlock:
用于转换数组里的元素类型,并支持过滤掉nil
。- 增加
NSDictionary(QMUI)
分类,提供qmui_mapWithBlock:
方法用于转换字典里的 key-value 类型,提供qmui_deepMapWithBlock:
方法用于深度拷贝的转换。 - 新增 hook 用于保护
-[NSMutableAttributedString appendAttributedString:]
遇到参数为nil
时会命中系统 assert: nil argument 的情况。 UILabel(QMUI)
增加qmui_centerOfCapHeight
属性用于获取单行文本里font.capHeight
的位置。UINavigationController(QMUI)
增加属性qmui_alwaysInvokeAppearanceMethods
用于在UINavigationController
不可视时进行 push/pop 依然能触发 vc 生命周期方法的方法。UINavigationController(QMUI)
增加属性qmui_lastOperation
用于获取当前正在进行的切换界面动画类型(push 或 pop)。UITextField(QMUI)
增加属性qmui_respondsToDeleteActionAtLeading
用于对齐UITextView
的行为:在输入框开头继续按删除按钮也可以触发 shoudChange 的 delegate 方法。
会带来 QMUI 新旧版本兼容问题的更新
- 配置表删除
SendAnalyticsToQMUITeam
。
如何适配新版
- 如果你有使用配置表,请删除其中的
SendAnalyticsToQMUITeam
。
Bugfix
- #1451 对因为被 present 盖住的界面,修改 navigationBar 样式时的 assert 条件做优化。
- 修复 #1473
UISearchController.searchBar
作为UITableView.tableHeaderView
时,进入搜索状态,搜索结果列表顶部有一大片空白的问题。 - 修复 #1498 开启
forceEnableInteractivePopGestureRecognizer
的界面被 push 的过程中快速手势返回,容易导致 App 卡死的 bug。 - #1501 修复
AutomaticCustomNavigationBarTransitionStyle
在setViewControllers:
场景下的若干问题。 - 修复
QMUIImagePickerViewController
初始滚动位置可能错误的 bug。 - 修复
QMUIAlertController
以ActionSheet
演示呈现较长内容时,顶部布局没考虑safeAreaInsets
的问题。 - 修复
QMUIBadge
对纯文本的UIBarButtonItem
基准布局错误的 bug。 - 修复
QMUIButton
在adjustsButtonWhenDisabled = NO
时也会在setEnabled:YES
里重置alpha
的问题。 - 优化
QMUINavigationButton
自定义返回按钮点击区域太小的问题。 - 修复
QMUIKeyboardManager
在以 iPad“侧拉”模式打开的 App 中获取键盘可视高度错误的 bug,iPhone、iPad 全屏/分屏/台前调度,都没这个问题。 - 修复
QMUITheme
在切换 theme 时错误地覆盖UITextView.textColor
导致如果输入框内存在不同颜色的富文本时会颜色错误的 bug。 - 修复同一个对象对不同 window 分别调用
qmui_addSizeObserverForWindow:
,最终其中某个 window size 发生变化时所有 block 都被触发的 bug。 - 解决在未使用配置表的情况下,QMUIAssert 应使自动变成 NSAssert 的问题。
- 修复 QMUI Demo 无法使用 XCTest 的问题。
- 修复
UISearchBar(QMUI)
快速在 show/hide left/right accessoryView 时容易出现状态错误的 bug。 - 修复
UIView(QMUI).qmui_shouldShowDebugColor
属性在开启又关闭后可能导致元素背景全黑的问题。