Skip to content

4.5.0

Compare
Choose a tag to compare
@MoLice MoLice released this 10 Aug 16:59
· 18 commits to master since this release

新增功能

  1. 增加 QMUIBarProtocol 用于同时约定 UINavigationBarUITabBar 的功能接口,因为这两种 bar 所需要的功能基本都一样,用 protocol 来约定也便于后续同步调整这两种 bar 的功能。同时也因此使得 UINavigationBar (QMUI) 新增了 qmui_effectViewqmui_effectViewsqmui_effectqmui_effectForegroundColor 几个与磨砂相关的接口。
  2. 由于 QMUIBarProtocolUINavigationBar 带来更多的能力,所以这个版本我们优化了 QMUISmoothEffectAutomaticCustomNavigationBarTransitionStyle 里与磨砂相关的表现,使其更符合组件预期。
  3. 增加 UIView (QMUINavigationTitleView).qmui_useAsNavigationTitleView 属性用于标记某个 view 为自定义的导航栏 titleView,以便 QMUI 自动帮你处理一些布局上的系统 bug。
  4. QMUIPopupMenuView 增加 willHandleButtonItemEventBlock 属性便于统一管理 item 的点击行为。
  5. CALayer (QMUI) 增加 qmui_layerWithName: 方法用于便捷查找指定 name 的 layer。
  6. UIActivityIndicator(QMUI) 支持用 qmui_size 指定大小。

会带来 QMUI 新旧版本兼容问题的更新

  1. 由于 QMUIBarProtocol 的调整,我们同时删除了 UINavigationBar (QMUI).qmui_backgroundContentView 属性。
  2. UISearchController.dimsBackgroundDuringPresentation 默认值在 iOS 15 下被改为 NO 了,为了保持与旧版本的一致,QMUISearchController 里将其改为 YES。
  3. #1425 QMUICommonTableViewController 内自带的 QMUISearchController 的搜索结果列表的 UITableViewStyle 从 Plain 改为与当前宿主 vc 的 tableView.style 一致。
  4. 将 QMUIStringPrivate qmui_substringFromIndex 的参数 index 等于字符串长度时返回的值从 nil 改为 @"",以保持与系统方法一致。

如何适配新版

  1. 如果仍需要 UINavigationBar (QMUI).qmui_backgroundContentView 属性,请将 QMUIKit 旧代码抄到业务项目里。
  2. 检查 iOS 15 里用到 QMUISearchController 的地方,检查进入搜索状态时界面表现是否符合预期。
  3. 简单检查用到 QMUICommonTableViewController、带有搜索功能,且 style 不为 UITableViewStylePlain 的列表,其搜索结果的 tableViewStyle 是否符合预期。
  4. 请检查用到 qmui_substringFromIndex 的地方,在 index 等于 string.length 时表现是否正常。

Bugfix

  1. 修复 QMUIAlertController 以 alert 形式显示时,如果内容特别多,浮层会溢出到屏幕的 safeAreaInsets 区域的问题。
  2. 修复 QMUIConsole.canShow = NO 时依然会创建相关的 view、viewController 对象的问题。
  3. 修复 iOS 15.4 启动 App 后到系统设置-辅助功能-显示与文字大小-修改一下“按钮形状”的开关,会 crash:-[UILabel _accessibilityButtonShapesChangedNotification:]: message sent to deallocated instance 0x17e751d60 的问题。
  4. 修复 QMUIMultipleDelegates 在 iOS 16 下配合 UIScrollView 可能引发 crash 的问题。
  5. 修复 QMUINavigationTitleView.needsLoadingPlaceholderSpace = NO 时即便不显示 loading,loading 也会占位,导致文字偏右的问题。
  6. 修复 QMUITextView 文字换行时丢失系统滚动动画特效的 bug。
  7. 修复 - [QMUITextView setFrame:] 被调用时即便 size 没变化也会触发 setContentOffset: 产生滚动的问题。
  8. 修复配置表的值发生变化时重新应用的时候,对于业务 App 使用自定义 container viewController 的场景,无法正确刷新它的 navigationBar、tabBar 样式的 bug。
  9. 修复 +[QMUIHelper applicationSize] 在 MacCatalyst App / M1 上返回了 CGSizeZero 导致 APPLICATION_WIDTHAPPLICATION_HEIGHT 的值为 0 的 bug。
  10. 修复在 root controller 实现了 preferredStatusBarStyle 方法并且在其中调用 childViewControllerForStatusBarStyle 方法的情况下,iOS 12 present 起 AVPlayerViewController 在 dismiss 时会触发 preferredStatusBarStyle 导致死循环的 bug:因为 AVPlayerViewController 内部的 preferredStatusBarStyle 会转向 presentingViewControllerpreferredStatusBarStyle,而后者又会 return AVPlayerViewController,于是死循环。
  11. 修复 qmui_substringAvoidBreakingUpCharacterSequences 系列方法在遇到 length 为1、range 与 string 相等的情况时会 crash 的 bug。
  12. 修复 QMUIStringPrivate 里的 assert 条件与系统方法不匹配的问题。
  13. 修复 substring:avoidBreakingUpCharacterSequencesWithRange:lessValue:countingNonASCIICharacterAsTwo: 在接受的 range 头尾都刚好落在一个 emoji 的中间时会得到一个负值 range 并引起 crash 的 bug,同时对负值 range 做 QMUIAssert 的提醒但不干预其返回值。
  14. #1248 #1274 #1377 修复 QMUIConsole 在没使用配置表或者配置表里没设置 TableViewCellBackgroundColor 的情况下,打印出来的日志背景是白色的,看不见文字的 bug。
  15. #1326 调整 StatusBarHeightConstant 的值,使其在 statusBarHidden 时,iOS 14 下返回44,iOS 15 返回50,保持与系统 UIApplication.statusBarFrame.size.height 一致。
  16. #1391 修复 NSURL (QMUI).qmui_queryItems item 类型错误的 bug。
  17. #1404 修复 QMUITextView 当文本较多,在真机上长按系统输入法的删除按钮达到快速删除模式时,输入框底部容易出现大段空白的 bug。
  18. #1411 修复 UITableView.delegate 开启了 qmui_multipleDelegatesEnabled 后在 dealloc 时可能引发 crash 的问题。
  19. #1413 修复 UISlider(QMUI) 先设置 qmui_step 再设置 qmui_stepDidChangeBlock 后某些情况下首次点击无法触发 block 的 bug。
  20. #1418 修复 UIImageViewUIButton 配合 template image 使用时无法通过 tintColor 来修改图片颜色的 bug。
  21. #1415 修复 QMUINavigationTitleView 先设置 needsLoadingView = YES 再修改 loadingViewSize 会导致文字无法完整显示的 bug。
  22. #1421 修复 QMUILabel.truncatingTailView 在 label.text 为空时 crash 的 bug。
  23. #1427 修复 QMUI 里 UITableViewsetDelegate:setDataSource: 可能引发 crash 的问题。

其他

  1. QMUIConsole 专属的 window 类型从 UIWindow 改为 QMUIConsoleWindow,使其更容易与其他 window 区分开(例如在 Lookin 里查看结构时)。
  2. - [NSString (QMUI) qmui_trim] 默认去掉 C 里的字符串结束符“\0”。