Releases
4.2.3
MoLice
released this
31 Mar 05:36
新增功能
增加 UICollectionView(QMUI)
提供 qmui_selectedBackgroundColor
属性便于设置点击时的背景色,同时也更便于兼容 QMUITheme
。
QMUIEmotionView
增加 verticalAlignment
等若干属性以支持类似微信的竖向滚动交互。
QMUIButton
增加属性 cornerRadius
用于更方便地设置按钮圆角,同时提供常量 QMUIButtonCornerRadiusAdjustsBounds
使其可以维持圆角为按钮高度的一半,不用业务自己在按钮大小发生变化时更新圆角值。
UIColor(QMUI)
增加方法 qmui_distanceBetweenColor:
用于计算两个颜色之间的相近程度,原理是将两个颜色转换为 HSB 模型后取两点之间的距离,注意该方法会忽略 alpha 通道。
UISearchBar(QMUI)
增加属性 qmui_searchController
用于获取与当前 searchBar 绑定的 UISearchController
对象。
UISearchBar(QMUI)
增加属性 qmui_alwaysEnableCancelButton
支持当某个 searchBar 脱离 UISearchController
存在时,强制使其 cancelButton
一直处于 enabled
状态(系统默认在输入框聚焦时 enabled,失焦时 disabled,这通常不是我们想要的)。
UITabBar(QMUI)
增加属性 qmui_effectView
用于获取内部的磨砂 view。
UITabBar(QMUI)
增加属性 qmui_effect
支持直接修改 tabBar 的磨砂类型(系统仅在 iOS 13 及以后才支持)。
UITabBar(QMUI)
增加属性 qmui_effectForegroundColor
支持精准指定 tabBar 磨砂的前景色,系统默认是无法做到这一点的,因为 UIVisualEffectView
在某些 blur style 下会有自带的一层前景色,且无法修改,你设置的前景色最终会和系统的前景色叠加,导致总是无法精准实现业务所需效果。
UITableView(QMUI)
增加属性 qmui_indexFrame
用于获取 tableView 右边那条 sectionIndex
索引条的 frame
。
UITableViewCell(QMUI)
增加属性 qmui_didAddToTableViewBlock
便于在 cell 能拿到 tableView 引用的第一时间做一些事情,例如根据不同 style 的 tableView 作不一样的样式区分。
UITableViewCell(QMUI)
增加属性 qmui_configureStyleBlock
让 cell 层面也能得到 willDisplayCell
的渲染时机,在这个 block 里你可以拿到 tableView 的引用,也可以知道当前 cell 的 indexPath
、qmui_cellPosition
等信息,便于你做一些全局样式的管理。
-[UIImage imageWithTintColor:]
、-[UIImage qmui_imageWithTintColor:]
支持将静态 image 和动态 color 组合为动态 image,在此之前你需要手动创建一个动态 image,在 provider block 里根据动态 color 的不同值生成不同的 image。
会带来 QMUI 新旧版本兼容问题的更新
由于 QMUIButton
增加的 cornerRadius
圆角接口,原本在子类 QMUIFillButton
、QMUIGhostButton
里自行实现的 cornerRadius
均被去除,对应的常量 QMUIFillButtonCornerRadiusAdjustsBounds
、QMUIGhostButtonCornerRadiusAdjustsBounds
也一并删除。
将上个版本被标记为已废弃的 +[QMUIThemeManager sharedInstance]
方法彻底删除。
#1193 由于修复 UIViewController.qmui_tabBarSpacingInViewCoordinator
未考虑 hidesBottomBarWhenPushed = YES
的情况的 bug,所以以前某个 vc 如果 hidesBottomBarWhenPushed = YES
,但却利用 qmui_tabBarSpacingInViewCoordinator
去获取布局信息,那么在新版本更新后,这个 vc 里拿到的值将为 0。0 是正确的,因为此时 tabBar 不可见,但却可能导致业务界面产生与 QMUI 4.2.2 不同的表现。
#1219 QMUINavigationControllerTransitionDelegate
里提供的接口 navigationController:poppingByInteractiveGestureRecognizer:viewControllerWillDisappear:viewControllerWillAppear:
无法直观判断手势返回最终是成功了还是取消了,因此新版本为其增加了新参数 isCancelled
,同时将旧方法标记为废弃,建议尽快替换为新方法。
由于设计师的回归,这个版本 QMUI Demo 调整了默认的 logo、配色,理论上不应该对业务项目产生任何影响(因为 QMUI Demo 是一个独立的示例项目),但保险起见,在 Release Note 里明确写出。
如何适配新版
全局搜索“QMUIFillButtonCornerRadiusAdjustsBounds”、“QMUIGhostButtonCornerRadiusAdjustsBounds”,将其换成新的 QMUIButtonCornerRadiusAdjustsBounds
。
全局搜索使用 +[QMUIThemeManager sharedInstance]
的地方,将其删除,并考虑用 QMUIThemeManagerCenter.defaultThemeManager
代替。
全局搜索用到 qmui_tabBarSpacingInViewCoordinator
的地方,检查该界面是否 hidesBottomBarWhenPushed = YES
且非 UINavigationController
的 rootViewController
,如果存在该情况,请注意它的布局是否正常。
全局搜索用到 navigationController:poppingByInteractiveGestureRecognizer:viewControllerWillDisappear:viewControllerWillAppear:
的地方,为其增加参数 isCancelled
,具体参数的位置请查看 QMUI 源码。
Bugfix
#999 修复 QMUITextView
在输入过程中从一行换到两行时会产生的跳动问题,同时修复 QMUITextView
初始化后通过代码设置 text,后续手动聚焦输入文字瞬间会跳动的 bug。
#1161 [UIKit Bug] 修复将 UISearchBar
作为 tableHeaderView
使用的 UITableView
,如果同时设置了 estimatedRowHeight
,则 contentSize
会错乱,导致滚动异常的系统 bug。
#1176 修复在 MainThreadChecker 开启的状态下使用了 QMUITheme
后可能导致“directTraitCollectionIMP EXC_BAD_ACCESS”的 bug。
#1177 修复 iOS 14.0-14.2,setViewControllers:
去到一个 hidesBottomBarWhenPushed = NO
的界面会 crash 的 bug。
#1180 修复 UINavigationController
不可见的情况下进行 pop 操作会命中 UINavigationController+QMUI.m 内的 NSAssert 的问题,同时借机优化 #261 里 -[UINavigationController pushViewController:animated:]
对 isViewControllerTransiting
的使用逻辑。
#1181 修复 QMUITextView
在显示 placeholder
时 sizeThatFits:
返回的结果没有包含 placeholder
占位大小的 bug。
#1187 修复 -[UITabBarItem(QMUI) qmui_imageViewInTabBarButton:]
方法在打开了系统的“辅助功能-显示与文字大小-按钮形状”后无法获取到正确 imageView 的 bug。
#1190 修复 iOS 12 及以下,在 rootViewController
、以 animated:NO
进行的 push/pop 界面,- [QMUINavigationControllerDelegate titleViewTintColor]
无效的 bug。
#1192 修复 - [QMUIMultipleDelegates respondsToSelector:]
不支持 NSProxy
类型的 delegate 成员的 bug。
#1198 修复 +[QMUIHelper isRegularScreen]
对 iPhone 12/12 Pro 判断错误,导致横屏时获取导航栏高度错误的 bug。
#1200 修复 QMUIConsole
在子线程里输出 log 会 crash 的 bug。
#1207 [UIKit Bug] 修复将 UISearchBar
作为 UITableView.tableHeaderView
使用时,如果列表内容不满一屏,可能出现搜索框不可视的系统 bug。
#1210 修复 - [QMUINavigationControllerDelegate titleViewTintColor]
在 iOS 12 下手势返回又取消后可能出错的 bug。
#1213 [UIKit Bug] 修复 UISearchBar
作为 tableHeaderView
使用时,切换 tableView 的 sectionIndex
的显隐,searchBar 的布局可能无法刷新的系统 bug。
#1215 [UIKit Bug] 修复将 UISearchBar
作为 tableHeaderView
使用的 UITableView
,在 tableView 尚未添加到 window 上就同时进行了 setTableHeaderView:
、reloadData
的操作,会导致滚动异常的系统 bug。
#1216 修复 iOS 12 及以下,QMUITableViewStyleInsetGrouped
在编辑、排序状态下布局错误的 bug。
#1217 [UIKit Bug] 修复 iOS 12 及以上的系统,如果设置了自己的 leftBarButtonItem
,且 title 很长时,则当 pop 的时候,title 会瞬间跳到左边,与 leftBarButtonItem
重叠的系统 bug。
#1218 修复 UITabBarItem.selectedImage
无法二次更新的 bug。
修复高帧率设备下 QMUIDisplayLinkAnimation
动画时长减半的 bug。
修复 QMUINavigationBarScrollingAnimator
的 barTintColorBlock
属性无效的 bug。
修复 NSString(QMUI)
提供的 qmui_substringAvoidBreakingUpCharacterSequencesFromIndex:lessValue:countingNonASCIICharacterAsTwo:
、qmui_substringAvoidBreakingUpCharacterSequencesToIndex:lessValue:countingNonASCIICharacterAsTwo:
这两个方法里当参数 countingNonASCIICharacterAsTwo
为 YES
时,没有将参数 index
按照 countingNonASCIICharacterAsTwo
的规则来计算的 bug。
修复 UITableView(QMUI).qmui_validContentWidth
属性在列表出现右边的 sectionIndex 索引条时返回的宽度错误的 bug。
其他
#1166 QMUIConsole
的实现从 textView 改为 tableView,以优化在展示大量 log 时的性能,同时也优化了搜索的关键词高亮体验。
#1220 优化 QMUI 内的 valueForKey:
用法可能存在一些风险。
#1214 @0x1306a94 兼容未启用 CLANG_ENABLE_MODULES
时通过 CocoaPods 集成会产生的编译错误。
配置表 NavBar
系列属性发生变化时会去刷新当前界面的 navigationBar,如果该界面有通过 QMUINavigationControllerDelegate
提供的统一接口去自定义业务界面自己的样式,则配置表不需要强制帮它刷新。
You can’t perform that action at this time.