Releases
4.4.1
MoLice
released this
14 Dec 14:18
新增功能
新增 UILabel (QMUI_Marquee)
分类,支持开启系统 UILabel
内置的跑马灯效果,功能比 QMUIMarqueeLabel
简单,但由于是系统内置的能力,性能应该是不需要担心的。我们推荐在满足需求的前提下优先使用 UILabel (QMUI_Marquee)
。
新增 UISlider (QMUI)
分类用于取代之前的 QMUISlider
(后者已删除),提供同等功能的同时,增加了 qmui_numberOfSteps
用于支持离散式数据,同时让 UIView (QMUI).qmui_outsideEdge
作用在 UISlider
上时,可以扩大中间圆点的响应区域(以前是扩大整个 slider,这通常不符合预期)。
UISlider+QMUI.mov
QMUITextFieldDelegate
增加方法 textField:shouldChangeCharactersInRange:replacementString:originalValue:
,用于业务使用了 maximumTextLength
时可以通过这个方法来实现业务自定义的输入限制。在之前的版本里,自定义的输入限制和 maximumTextLength
是两个互斥的能力。
同上,QMUITextViewDelegate
也增加了方法 textView:shouldChangeTextInRange:text:originalValue:
,原因不再赘述。
UIImage (QMUI)
里的 qmui_imageWithTintColor:
、qmui_imageWithColor:
方法增加 QMUIAssert 用于辅助发现业务里“无法正确用一个 QMUIThemeColor 生成一张 QMUIThemeImage” 的场景。
UITabBar (QMUI)
增加 qmui_effectViews
用于在 iOS 15 里获取所有的背景磨砂 view。
会带来 QMUI 新旧版本兼容问题的更新
由于 QMUISlider
提供的功能没必要非要以子类的形式存在,因此这个版本我们删除了 QMUISlider
,同时新增了功能更加强大的 UISlider (QMUI)
分类。
上个版本里,为了修复 #1320 的问题,引入了 #1320 (comment) 所述的新问题,经过考虑,这个版本我们回退了 4.4.0 里的改动(也即与 4.3.0 一致),至于 #1320 的问题,是 OC 和 Swift 语言特性导致的,QMUI 暂时不处理,业务请自行规避该用法。
如何适配新版
如果你的 App 是用 Xcode 13 打包的,请检查运行在 iOS 15 上时 QMUITheme 功能是否正常。
如果你的项目里有使用 QMUISlider
,请将其改为 UISlider (QMUI)
里的对应属性(通常都是加个 qmui_
前缀而已),或者也可以直接复制 QMUISlider.h/.m 到项目内继续使用。
请检查项目里继承自 QMUITableViewCell
并且重写了 initWithStyle:reuseIdentifier:
方法,但在业务使用时通过 initForTableView:withStyle:reuseIdentifier:
构造 cell 的场景,表现是否正常(预期应该与 4.3.0 保持一致)。
更新项目内的 QMUI 版本,运行起来后,请检查 Xcode 控制台是否输出“QMUIThemeColor 生成的图片却不是 QMUIThemeImage”字样的 log,如果有,意味着该处的 image 可能无法自动响应 theme 变化。
如果有使用配置表
请将配置表里 QMUILog
段落的位置迁移到 UIControl
的前面,这样才能保证其他模块在用到与 QMUILog 相关的开关时能读取到正确的值。
Bugfix
#1236 由于新增的 UISlider (QMUI)
分类,顺便修复了 iOS 14 及以后的系统里无法正确获取到 thumbView 的 bug。
#1247 修复 iOS 14 及以后的系统里,如果项目对一个 UIView
使用了 qmui_layoutSubviewsBlock
属性,则会导致在 iPad 里开启悬浮键盘时,聚焦一个带有 inputAccessoryView
的输入框时会死循环卡死的 bug。
修复开启了 NavBarRemoveBackgroundEffectAutomatically
后 iOS 15 里的 barTintColor
无法与 effectView
共存的 bug。
#1335 修复 AutomaticCustomNavigationBarTransitionStyle
在前后两个导航栏的显隐状态不一致时表现错误的 bug。
修复 Xcode 13 编译的 App 在 iOS 15 下运行时,如果某个界面通过 QMUINavigationControllerAppearanceDelegate
系列方法控制自己的导航栏样式,则停留在该界面时切换 QMUITheme,导航栏样式会被覆盖为配置表的全局样式,而非该界面自己设置的值。
修复 -[NSString(QMUI) qmui_substringAvoidBreakingUpCharacterSequencesToIndex:]
方法在 index 刚好等于 string.length
时会 crash 的 bug:从语义上这样的 index 应当是合法的,此时需要返回当前 string 的 copy。
修复 UITabBar (QMUI).qmui_effectView
在 iOS 15 下无法正确获取到背景磨砂 view 的 bug,会导致 UITabBar (QMUI).qmui_effect
失效。
修复 QMUITableViewStyleInsetGrouped
的列表,每个 section 最后一个 cell 右下角的圆角丢失的 bug。
重新制作 UISlider (QMUI)
的 Demo。
QMUIMarqueeLabel
Demo 增加 UILabel (QMUI_Marquee)
功能的展示。
优化 QMUIInteractiveDebugPanelViewController
的使用方式,使其可以方便地以 subview 的形式添加到界面上显示,也可以配置自己项目的外观。
UIImage (QMUI)
Demo 增加渐变图片的展示。
UITextField (QMUI)
Demo 增加对自定义内容格式限制的展示。
You can’t perform that action at this time.