Skip to content

2.9.1

Compare
Choose a tag to compare
@MoLice MoLice released this 13 Nov 15:10
· 312 commits to master since this release

新增功能

  1. CALayer (QMUI) 增加 qmui_maskedCorners 用于支持某几个角为圆角的情况,代替系统的 CALayer maskedCorners,因为后者仅支持 iOS 11 及以后的系统。
  2. 增加 NSURL (QMUI),提供 qmui_queryItems 用于快速将一个 NSURL 的 query 转换成 NSDictionary
  3. QMUICommonViewController 增加方法 updateNavigationBarAppearance 用于在 QMUINavigationControllerAppearanceDelegate 系列方法的返回值发生变化时可以主动将新值应用到导航栏上。
  4. QMUIMarqueeLabel 增加 fadeWidthPercent 用于控制左右两端的渐变区域的大小。
  5. QMUIScrollAnimator 增加 updateScroll 方法用于主动更新当前的滚动位置对应的动画状态。
  6. QMUINavigationBarScrollingAnimatorQMUINavigationBarScrollingSnapAnimator 增加 continuous 属性,可自由控制达到临界点后的滚动操作是否需要继续触发动画。
  7. QMUITableViewHeaderFooterView 增加 updateAppearance 方法用于子类继承时可以重写父类的默认样式。
  8. QMUIModalPresentationViewController 增加 onlyRespondsToKeyboardEventFromDescendantViews 用于屏蔽非浮层内的 view 产生的键盘事件,默认开启。

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

  1. QMUINavigationControllerDelegate 增加方法 customNavigationBarTransitionKey 用于界面切换时判断是否需要处理导航栏样式,同时废弃旧的4个接口(这个版本依然能用,只是被标记为废弃,下个版本将会完全删除,建议尽快替换):
    - (BOOL)shouldCustomNavigationBarTransitionWhenPushAppearing DEPRECATED_ATTRIBUTE;
    - (BOOL)shouldCustomNavigationBarTransitionWhenPushDisappearing DEPRECATED_ATTRIBUTE;
    - (BOOL)shouldCustomNavigationBarTransitionWhenPopAppearing DEPRECATED_ATTRIBUTE;
    - (BOOL)shouldCustomNavigationBarTransitionWhenPopDisappearing DEPRECATED_ATTRIBUTE;
  2. 接上一点,配置表增加 AutomaticCustomNavigationBarTransitionStyle 用于支持自动判断前后两个界面的导航栏样式,默认关闭,建议可以去掉项目里第 1 点提到的所有方法的使用,改为开启配置表这个自动判断的开关。
  3. 鉴于 #421 的情况,配置表增加开关 ShouldAssertResizableImageCapInsetsError 用于控制 [UIImage (QMUI) resizableImage] 里对 capInsets 错误值的判断是否要用 NSAssert 的方式提醒,默认关闭,只通过 QMUILog 提醒。
  4. 增加宏 QMUICMIActivated 用于标志当前项目是否正在使用配置表,同时 QMUI 控件里用到配置表的值之前都会先判断是否有启用了配置表,避免出现 #423 所示的问题。

如何适配新版

  1. 检查项目里开启了 qmui_multipleDelegatesEnabled 的地方功能是否正常。
  2. 如果有使用配置表,请检查用到 QMUINavigationController 的地方,界面切换时,导航栏样式是否有误。
  3. 如果有使用配置表,请在配置表里增加以下两行,并将其改为你希望的值,建议将第一个改为 YES。
    QMUICMI.automaticCustomNavigationBarTransitionStyle = NO; // AutomaticCustomNavigationBarTransitionStyle : 界面 push/pop 时是否要自动根据两个界面的 barTintColor/backgroundImage/shadowImage 的样式差异来决定是否使用自定义的导航栏效果
    
    QMUICMI.shouldAssertResizableImageCapInsetsError = NO; // ShouldAssertResizableImageCapInsetsError : UIImage (QMUI) 里的 resizableImage 遇到错误的 inset 值时是否需要以 NSAssert 的方式的方式提醒,默认为 NO,NO 则用 QMUILog
  4. 全局搜索 shouldCustomNavigationBarTransitionWhenPushAppearingshouldCustomNavigationBarTransitionWhenPushDisappearingshouldCustomNavigationBarTransitionWhenPopAppearingshouldCustomNavigationBarTransitionWhenPopDisappearing,将用到的地方替换为新的 customNavigationBarTransitionKey,新接口通过判断前后两个界面返回的 NSString 是否一致来决定是否要使用自定义的导航栏转场样式,具体的返回值规则由业务自行约定即可。另外,更建议去掉这些接口的使用,改为用配置表新增的 AutomaticCustomNavigationBarTransitionStyle 开关,全自动判断。

Bugfix

  1. Fixed #422 修复 iOS 12.1 下,当 UINavigationBar 被隐藏时,手势返回过程中 UITabBar 会布局错误的系统 bug。
  2. Fixed #423 修复在不使用配置表的情况下,UIViewController (NavigationBarTransition) 在界面切换时会错误地把导航栏样式设置为系统默认样式的问题。
  3. Fixed #425 修复 UIViewController (NavigationBarTransition) 会强制修改界面的 view.clipsToBounds,可能与业务代码产生冲突的问题。
  4. Fixed #426 修复在 present 一个 QMUINavigationController 的过程中 push,可能导致 push 被拦截,以后都无法继续再 push 新界面的 bug。
  5. Fixed #427 修复将 QMUIAlertController 作为成员变量保存起来复用时,QMUIAlertAction 回调只能执行一次的问题。
  6. 修复 UIScrollView (QMUI)qmui_alreadyAtTopqmui_alreadyAtBottom 可能因浮点精度问题导致返回值错误的问题。
  7. 修复 QMUIMultipleDelegates 内部对 qmui_delegatesSelf 判断错误导致可能认为某个 delegate 无法响应指定 selector 的 bug。
  8. 修复 QMUIKeyboardManager 可能会收到别的 App 发出的键盘事件的问题。
  9. 修复 QMUISearchControllerhidesNavigationBarDuringPresentationNO 且项目使用了 shouldCustomizeNavigationBarTransitionIfHideable 的情况下会导致导航栏消失的 bug。

其他

  1. [QMUITips hideAllTips] 改为隐藏所有的 QMUITips,以前是只隐藏 [UIApplication sharedApplication].delegate.window 里的 QMUITips