Skip to content

2.7.0

Compare
Choose a tag to compare
@MoLice MoLice released this 05 Jun 09:59
· 342 commits to master since this release

新增功能

  1. 增加 QMUIBadge 组件用于为 UIBarItem (包含 UIBarButtonItemUITabBarItem)显示未读数和未读红点,具体请看 UIBarItem+QMUIBadge.h 头文件的说明,相应地,QMUI Demo 里也增加了对应的 Demo 展示。目前业界常见的红点组件基本上对红点的设置时机都有要求,因为红点都是加到 [item valueForKey:@"view"] 里,但 UIBarButtonItem 只有在 UINavigationBar 可视后才能获取到 view 属性,所以用起来很麻烦。但 QMUIBadge 并没有这个限制,推荐使用。
  2. UIControl (QMUI) 增加 qmui_tapBlock 属性用于方便地添加事件,不用再去写 addTarget:action:forControlEvents: 了。
  3. QMUIAlertControllerDelegate 增加 shouldHideAlertController: 用于阻止 hide 操作。
  4. UICollectionView (QMUI) 增加 qmui_indexPathsForVisibleItems 用于获取按照大小排序后的 visible items,系统的 indexPathsForVisibleItems 返回的数组是无序的。
  5. NSObject (QMUI) 增加 qmui_enumrateIvarsXxxx 系列接口用于遍历某个 class 的成员变量,相应的,QMUI Demo 里的 NSObject (QMUI) 也可以搜索成员变量了。
  6. QMUICommonDefines.h 增加 CGSizeIsValidatedCGSizeIsNanCGSizeIsInf 函数用于判断非法的 CGSize 值。

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

  1. 废弃当初为了兼容 iOS 7 的 QMUIVisualEffectView,现在请使用系统自带的 UIVisualEffectView
  2. 将 QMUI 内多个地方使用的 didInitialized 重命名为 didInitialize,以保证更准确的表达,相应的,Code Snippets 也进行了更新。
  3. - [QMUIModalPresentationViewControllerDelegate requestHideAllModalPresentationViewController] 方法废弃,新增 QMUIModalPresentationComponentProtocol 协议用于代替被废弃的方法。
  4. QMUIModalPresentationViewController.maximumContentViewWidth 默认值改为 CGFLOAT_MAX,与常见的以 maximumXxx 风格命名的属性的默认值保持一致,如果业务里依赖于旧版本的默认值,则更新版本后,需要重新检查这些地方的浮层的布局是否正常。

如何适配新版

  1. 全局搜索 QMUIVisualEffectView,将使用的地方改为用 UIVisualEffectView
  2. 以 Starting With 模式全局搜索 didInitialized,将其替换为 didInitialize,如果你有使用 Code Snippets,也请一并更新。
  3. 全局搜索 requestHideAllModalPresentationViewController,将其改为用 QMUIModalPresentationComponentProtocol 协议(可能需要对该处声明为实现了 <QMUIModalPresentationComponentProtocol>)。
  4. 检查所有使用了 QMUIModalPresentationViewController 的地方,观察其在 iPad 等宽屏场景下布局是否正常,或者也可以直接用 [QMUIModalPresentationViewController appearance].maximumContentWidth = ([QMUIHelper screenSizeFor47Inch].width - UIEdgeInsetsGetHorizontalValue(appearance.contentViewMargins)); 来将默认值恢复到与上一个版本一致。
  5. 如果有使用配置表,请到 QMUIKit/QMUIConfigurationTemplate/QMUIConfigurationTemplate.m 里将 #pragma mark - QMUIBadge 那一段新增的配置复制到你的配置表里。

Bugfix

  1. Fixed #332 #344 QMUICommonViewController 里对 setupNavigationItemssetupToolbarItems 调用错误,上个版本的手误,终于改过来了🤪。
  2. Fixed #342 修复 QMUITextView 调用 initWithFrame: 初始化时,高度会强制被改为 0 的 bug。
  3. Fixed #335 修复当修改非 topViewControllerleftBarButtonItem 会影响 topViewController 自定义返回按钮的布局的 bug。另外,由于尚未有理想的自定义返回按钮解决方案,以及尚未遇到系统返回按钮无法实现的功能,因此自定义返回按钮功能可能会在后续的版本里被废弃,建议不要再使用。
  4. Fixed #346 修复为 UITextViewUITextField 打开 qmui_multipleDelegatesEnabled 后把输入框的 delegate 指向输入框自身时,会产生死循环的 bug。
  5. 修复 QMUIKeyboardManager 在 App 已经处于不活跃状态时依然接受键盘事件,容易导致业务布局混乱的问题。
  6. 修复 QMUIAlertController 连续调用两次 show 会导致产生一个无法消除的 window,影响 App 点击的 bug。
  7. 修复 QMUICommonTableViewController 里的 tableView.contentInset 变化时不会自动触发 emptyView 刷新布局的 bug。
  8. 修复 QMUIDialogSelectionViewControllersetItems: 后没有刷新布局的 bug。

其他修改

  1. 优化 QMUIEmptyView 里的 actionButton 按钮的高亮样式,以前通过 actionButtonTitleColor 属性设置按钮文字颜色时只设置了 UIControlStateNormal 状态的,所以点击时看不到变化。