Releases
4.5.0
MoLice
released this
10 Aug 16:59
新增功能
增加 QMUIBarProtocol
用于同时约定 UINavigationBar
、UITabBar
的功能接口,因为这两种 bar 所需要的功能基本都一样,用 protocol 来约定也便于后续同步调整这两种 bar 的功能。同时也因此使得 UINavigationBar (QMUI)
新增了 qmui_effectView
、qmui_effectViews
、qmui_effect
、qmui_effectForegroundColor
几个与磨砂相关的接口。
由于 QMUIBarProtocol
为 UINavigationBar
带来更多的能力,所以这个版本我们优化了 QMUISmoothEffect
、AutomaticCustomNavigationBarTransitionStyle
里与磨砂相关的表现,使其更符合组件预期。
增加 UIView (QMUINavigationTitleView).qmui_useAsNavigationTitleView
属性用于标记某个 view 为自定义的导航栏 titleView,以便 QMUI 自动帮你处理一些布局上的系统 bug。
QMUIPopupMenuView
增加 willHandleButtonItemEventBlock
属性便于统一管理 item 的点击行为。
CALayer (QMUI)
增加 qmui_layerWithName:
方法用于便捷查找指定 name 的 layer。
UIActivityIndicator(QMUI)
支持用 qmui_size
指定大小。
会带来 QMUI 新旧版本兼容问题的更新
由于 QMUIBarProtocol
的调整,我们同时删除了 UINavigationBar (QMUI).qmui_backgroundContentView
属性。
UISearchController.dimsBackgroundDuringPresentation
默认值在 iOS 15 下被改为 NO 了,为了保持与旧版本的一致,QMUISearchController
里将其改为 YES。
#1425 QMUICommonTableViewController
内自带的 QMUISearchController
的搜索结果列表的 UITableViewStyle
从 Plain 改为与当前宿主 vc 的 tableView.style 一致。
将 QMUIStringPrivate qmui_substringFromIndex
的参数 index 等于字符串长度时返回的值从 nil 改为 @"",以保持与系统方法一致。
如何适配新版
如果仍需要 UINavigationBar (QMUI).qmui_backgroundContentView
属性,请将 QMUIKit 旧代码抄到业务项目里。
检查 iOS 15 里用到 QMUISearchController
的地方,检查进入搜索状态时界面表现是否符合预期。
简单检查用到 QMUICommonTableViewController
、带有搜索功能,且 style 不为 UITableViewStylePlain
的列表,其搜索结果的 tableViewStyle 是否符合预期。
请检查用到 qmui_substringFromIndex
的地方,在 index 等于 string.length 时表现是否正常。
Bugfix
修复 QMUIAlertController
以 alert 形式显示时,如果内容特别多,浮层会溢出到屏幕的 safeAreaInsets 区域的问题。
修复 QMUIConsole.canShow = NO
时依然会创建相关的 view、viewController 对象的问题。
修复 iOS 15.4 启动 App 后到系统设置-辅助功能-显示与文字大小-修改一下“按钮形状”的开关,会 crash:-[UILabel _accessibilityButtonShapesChangedNotification:]: message sent to deallocated instance 0x17e751d60
的问题。
修复 QMUIMultipleDelegates
在 iOS 16 下配合 UIScrollView
可能引发 crash 的问题。
修复 QMUINavigationTitleView.needsLoadingPlaceholderSpace = NO
时即便不显示 loading,loading 也会占位,导致文字偏右的问题。
修复 QMUITextView
文字换行时丢失系统滚动动画特效的 bug。
修复 - [QMUITextView setFrame:]
被调用时即便 size 没变化也会触发 setContentOffset:
产生滚动的问题。
修复配置表的值发生变化时重新应用的时候,对于业务 App 使用自定义 container viewController 的场景,无法正确刷新它的 navigationBar、tabBar 样式的 bug。
修复 +[QMUIHelper applicationSize]
在 MacCatalyst App / M1 上返回了 CGSizeZero
导致 APPLICATION_WIDTH
、APPLICATION_HEIGHT
的值为 0 的 bug。
修复在 root controller 实现了 preferredStatusBarStyle
方法并且在其中调用 childViewControllerForStatusBarStyle
方法的情况下,iOS 12 present 起 AVPlayerViewController
在 dismiss 时会触发 preferredStatusBarStyle
导致死循环的 bug:因为 AVPlayerViewController
内部的 preferredStatusBarStyle
会转向 presentingViewController
的 preferredStatusBarStyle
,而后者又会 return AVPlayerViewController
,于是死循环。
修复 qmui_substringAvoidBreakingUpCharacterSequences
系列方法在遇到 length 为1、range 与 string 相等的情况时会 crash 的 bug。
修复 QMUIStringPrivate
里的 assert 条件与系统方法不匹配的问题。
修复 substring:avoidBreakingUpCharacterSequencesWithRange:lessValue:countingNonASCIICharacterAsTwo:
在接受的 range 头尾都刚好落在一个 emoji 的中间时会得到一个负值 range 并引起 crash 的 bug,同时对负值 range 做 QMUIAssert 的提醒但不干预其返回值。
#1248 #1274 #1377 修复 QMUIConsole
在没使用配置表或者配置表里没设置 TableViewCellBackgroundColor
的情况下,打印出来的日志背景是白色的,看不见文字的 bug。
#1326 调整 StatusBarHeightConstant
的值,使其在 statusBarHidden 时,iOS 14 下返回44,iOS 15 返回50,保持与系统 UIApplication.statusBarFrame.size.height
一致。
#1391 修复 NSURL (QMUI).qmui_queryItems
item 类型错误的 bug。
#1404 修复 QMUITextView
当文本较多,在真机上长按系统输入法的删除按钮达到快速删除模式时,输入框底部容易出现大段空白的 bug。
#1411 修复 UITableView.delegate
开启了 qmui_multipleDelegatesEnabled
后在 dealloc 时可能引发 crash 的问题。
#1413 修复 UISlider(QMUI)
先设置 qmui_step
再设置 qmui_stepDidChangeBlock
后某些情况下首次点击无法触发 block 的 bug。
#1418 修复 UIImageView
、UIButton
配合 template image 使用时无法通过 tintColor
来修改图片颜色的 bug。
#1415 修复 QMUINavigationTitleView
先设置 needsLoadingView = YES
再修改 loadingViewSize
会导致文字无法完整显示的 bug。
#1421 修复 QMUILabel.truncatingTailView
在 label.text 为空时 crash 的 bug。
#1427 修复 QMUI 里 UITableView
先 setDelegate:
再 setDataSource:
可能引发 crash 的问题。
其他
将 QMUIConsole
专属的 window 类型从 UIWindow
改为 QMUIConsoleWindow
,使其更容易与其他 window 区分开(例如在 Lookin 里查看结构时)。
- [NSString (QMUI) qmui_trim]
默认去掉 C 里的字符串结束符“\0”。
You can’t perform that action at this time.