Skip to content

4.4.1

Compare
Choose a tag to compare
@MoLice MoLice released this 14 Dec 14:18
· 32 commits to master since this release

新增功能

  1. 新增 UILabel (QMUI_Marquee) 分类,支持开启系统 UILabel 内置的跑马灯效果,功能比 QMUIMarqueeLabel 简单,但由于是系统内置的能力,性能应该是不需要担心的。我们推荐在满足需求的前提下优先使用 UILabel (QMUI_Marquee)
  2. 新增 UISlider (QMUI) 分类用于取代之前的 QMUISlider(后者已删除),提供同等功能的同时,增加了 qmui_numberOfSteps 用于支持离散式数据,同时让 UIView (QMUI).qmui_outsideEdge 作用在 UISlider 上时,可以扩大中间圆点的响应区域(以前是扩大整个 slider,这通常不符合预期)。
    UISlider+QMUI.mov
  3. QMUITextFieldDelegate 增加方法 textField:shouldChangeCharactersInRange:replacementString:originalValue:,用于业务使用了 maximumTextLength 时可以通过这个方法来实现业务自定义的输入限制。在之前的版本里,自定义的输入限制和 maximumTextLength 是两个互斥的能力。
  4. 同上,QMUITextViewDelegate 也增加了方法 textView:shouldChangeTextInRange:text:originalValue:,原因不再赘述。
  5. UIImage (QMUI) 里的 qmui_imageWithTintColor:qmui_imageWithColor: 方法增加 QMUIAssert 用于辅助发现业务里“无法正确用一个 QMUIThemeColor 生成一张 QMUIThemeImage” 的场景。
  6. UITabBar (QMUI) 增加 qmui_effectViews 用于在 iOS 15 里获取所有的背景磨砂 view。

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

  1. 由于 QMUISlider 提供的功能没必要非要以子类的形式存在,因此这个版本我们删除了 QMUISlider,同时新增了功能更加强大的 UISlider (QMUI) 分类。
  2. 上个版本里,为了修复 #1320 的问题,引入了 #1320 (comment) 所述的新问题,经过考虑,这个版本我们回退了 4.4.0 里的改动(也即与 4.3.0 一致),至于 #1320 的问题,是 OC 和 Swift 语言特性导致的,QMUI 暂时不处理,业务请自行规避该用法。

如何适配新版

  1. 如果你的 App 是用 Xcode 13 打包的,请检查运行在 iOS 15 上时 QMUITheme 功能是否正常。
  2. 如果你的项目里有使用 QMUISlider,请将其改为 UISlider (QMUI) 里的对应属性(通常都是加个 qmui_ 前缀而已),或者也可以直接复制 QMUISlider.h/.m 到项目内继续使用。
  3. 请检查项目里继承自 QMUITableViewCell 并且重写了 initWithStyle:reuseIdentifier: 方法,但在业务使用时通过 initForTableView:withStyle:reuseIdentifier: 构造 cell 的场景,表现是否正常(预期应该与 4.3.0 保持一致)。
  4. 更新项目内的 QMUI 版本,运行起来后,请检查 Xcode 控制台是否输出“QMUIThemeColor 生成的图片却不是 QMUIThemeImage”字样的 log,如果有,意味着该处的 image 可能无法自动响应 theme 变化。

如果有使用配置表

  1. 请将配置表里 QMUILog 段落的位置迁移到 UIControl 的前面,这样才能保证其他模块在用到与 QMUILog 相关的开关时能读取到正确的值。

Bugfix

  1. #1236 由于新增的 UISlider (QMUI) 分类,顺便修复了 iOS 14 及以后的系统里无法正确获取到 thumbView 的 bug。
  2. #1247 修复 iOS 14 及以后的系统里,如果项目对一个 UIView 使用了 qmui_layoutSubviewsBlock 属性,则会导致在 iPad 里开启悬浮键盘时,聚焦一个带有 inputAccessoryView 的输入框时会死循环卡死的 bug。
  3. 修复开启了 NavBarRemoveBackgroundEffectAutomatically 后 iOS 15 里的 barTintColor 无法与 effectView 共存的 bug。
  4. #1335 修复 AutomaticCustomNavigationBarTransitionStyle 在前后两个导航栏的显隐状态不一致时表现错误的 bug。
  5. 修复 Xcode 13 编译的 App 在 iOS 15 下运行时,如果某个界面通过 QMUINavigationControllerAppearanceDelegate 系列方法控制自己的导航栏样式,则停留在该界面时切换 QMUITheme,导航栏样式会被覆盖为配置表的全局样式,而非该界面自己设置的值。
  6. 修复 -[NSString(QMUI) qmui_substringAvoidBreakingUpCharacterSequencesToIndex:] 方法在 index 刚好等于 string.length 时会 crash 的 bug:从语义上这样的 index 应当是合法的,此时需要返回当前 string 的 copy。
  7. 修复 UITabBar (QMUI).qmui_effectView 在 iOS 15 下无法正确获取到背景磨砂 view 的 bug,会导致 UITabBar (QMUI).qmui_effect 失效。
  8. 修复 QMUITableViewStyleInsetGrouped 的列表,每个 section 最后一个 cell 右下角的圆角丢失的 bug。

QMUI Demo

  1. 重新制作 UISlider (QMUI) 的 Demo。
  2. QMUIMarqueeLabel Demo 增加 UILabel (QMUI_Marquee) 功能的展示。
  3. 优化 QMUIInteractiveDebugPanelViewController 的使用方式,使其可以方便地以 subview 的形式添加到界面上显示,也可以配置自己项目的外观。
  4. UIImage (QMUI) Demo 增加渐变图片的展示。
  5. UITextField (QMUI) Demo 增加对自定义内容格式限制的展示。