Releases
2.9.1
MoLice
released this
13 Nov 15:10
新增功能
CALayer (QMUI)
增加 qmui_maskedCorners
用于支持某几个角为圆角的情况,代替系统的 CALayer maskedCorners
,因为后者仅支持 iOS 11 及以后的系统。
增加 NSURL (QMUI)
,提供 qmui_queryItems
用于快速将一个 NSURL
的 query 转换成 NSDictionary
。
QMUICommonViewController
增加方法 updateNavigationBarAppearance
用于在 QMUINavigationControllerAppearanceDelegate
系列方法的返回值发生变化时可以主动将新值应用到导航栏上。
QMUIMarqueeLabel
增加 fadeWidthPercent
用于控制左右两端的渐变区域的大小。
QMUIScrollAnimator
增加 updateScroll
方法用于主动更新当前的滚动位置对应的动画状态。
QMUINavigationBarScrollingAnimator
和 QMUINavigationBarScrollingSnapAnimator
增加 continuous
属性,可自由控制达到临界点后的滚动操作是否需要继续触发动画。
QMUITableViewHeaderFooterView
增加 updateAppearance
方法用于子类继承时可以重写父类的默认样式。
QMUIModalPresentationViewController
增加 onlyRespondsToKeyboardEventFromDescendantViews
用于屏蔽非浮层内的 view 产生的键盘事件,默认开启。
会带来 QMUI 新旧版本兼容问题的更新
QMUINavigationControllerDelegate
增加方法 customNavigationBarTransitionKey
用于界面切换时判断是否需要处理导航栏样式,同时废弃旧的4个接口(这个版本依然能用,只是被标记为废弃,下个版本将会完全删除 ,建议尽快替换):
- (BOOL )shouldCustomNavigationBarTransitionWhenPushAppearing DEPRECATED_ATTRIBUTE;
- (BOOL )shouldCustomNavigationBarTransitionWhenPushDisappearing DEPRECATED_ATTRIBUTE;
- (BOOL )shouldCustomNavigationBarTransitionWhenPopAppearing DEPRECATED_ATTRIBUTE;
- (BOOL )shouldCustomNavigationBarTransitionWhenPopDisappearing DEPRECATED_ATTRIBUTE;
接上一点,配置表增加 AutomaticCustomNavigationBarTransitionStyle
用于支持自动判断前后两个界面的导航栏样式,默认关闭,建议可以去掉项目里第 1 点提到的所有方法的使用,改为开启配置表这个自动判断的开关。
鉴于 #421 的情况,配置表增加开关 ShouldAssertResizableImageCapInsetsError
用于控制 [UIImage (QMUI) resizableImage]
里对 capInsets
错误值的判断是否要用 NSAssert 的方式提醒,默认关闭,只通过 QMUILog
提醒。
增加宏 QMUICMIActivated
用于标志当前项目是否正在使用配置表,同时 QMUI 控件里用到配置表的值之前都会先判断是否有启用了配置表,避免出现 #423 所示的问题。
如何适配新版
检查项目里开启了 qmui_multipleDelegatesEnabled
的地方功能是否正常。
如果有使用配置表,请检查用到 QMUINavigationController
的地方,界面切换时,导航栏样式是否有误。
如果有使用配置表,请在配置表里增加以下两行,并将其改为你希望的值,建议将第一个改为 YES。
QMUICMI.automaticCustomNavigationBarTransitionStyle = NO ; // AutomaticCustomNavigationBarTransitionStyle : 界面 push/pop 时是否要自动根据两个界面的 barTintColor/backgroundImage/shadowImage 的样式差异来决定是否使用自定义的导航栏效果
QMUICMI.shouldAssertResizableImageCapInsetsError = NO ; // ShouldAssertResizableImageCapInsetsError : UIImage (QMUI) 里的 resizableImage 遇到错误的 inset 值时是否需要以 NSAssert 的方式的方式提醒,默认为 NO,NO 则用 QMUILog
全局搜索 shouldCustomNavigationBarTransitionWhenPushAppearing
、shouldCustomNavigationBarTransitionWhenPushDisappearing
、shouldCustomNavigationBarTransitionWhenPopAppearing
、shouldCustomNavigationBarTransitionWhenPopDisappearing
,将用到的地方替换为新的 customNavigationBarTransitionKey
,新接口通过判断前后两个界面返回的 NSString
是否一致来决定是否要使用自定义的导航栏转场样式,具体的返回值规则由业务自行约定即可。另外,更建议去掉这些接口的使用,改为用配置表新增的 AutomaticCustomNavigationBarTransitionStyle
开关,全自动判断。
Bugfix
Fixed #422 修复 iOS 12.1 下,当 UINavigationBar
被隐藏时,手势返回过程中 UITabBar
会布局错误的系统 bug。
Fixed #423 修复在不使用配置表的情况下,UIViewController (NavigationBarTransition)
在界面切换时会错误地把导航栏样式设置为系统默认样式的问题。
Fixed #425 修复 UIViewController (NavigationBarTransition)
会强制修改界面的 view.clipsToBounds
,可能与业务代码产生冲突的问题。
Fixed #426 修复在 present 一个 QMUINavigationController
的过程中 push,可能导致 push 被拦截,以后都无法继续再 push 新界面的 bug。
Fixed #427 修复将 QMUIAlertController
作为成员变量保存起来复用时,QMUIAlertAction
回调只能执行一次的问题。
修复 UIScrollView (QMUI)
的 qmui_alreadyAtTop
、qmui_alreadyAtBottom
可能因浮点精度问题导致返回值错误的问题。
修复 QMUIMultipleDelegates
内部对 qmui_delegatesSelf
判断错误导致可能认为某个 delegate 无法响应指定 selector 的 bug。
修复 QMUIKeyboardManager
可能会收到别的 App 发出的键盘事件的问题。
修复 QMUISearchController
在 hidesNavigationBarDuringPresentation
为 NO
且项目使用了 shouldCustomizeNavigationBarTransitionIfHideable
的情况下会导致导航栏消失的 bug。
其他
[QMUITips hideAllTips]
改为隐藏所有的 QMUITips
,以前是只隐藏 [UIApplication sharedApplication].delegate.window
里的 QMUITips
。
You can’t perform that action at this time.