内容简介:QMUI iOS 2.9.3 版本已发布,更新内容如下:如何适配新版
QMUI iOS 2.9.3 版本已发布,更新内容如下:
新增功能
-
增加
NSObject (QMUI_DataBind)
用于临时给NSObject
添加一些信息,省去自定义 class 或者增加 property 的成本。 -
UIViewController (QMUI)
增加qmui_visibleState
用于获取当前 viewController 所处的生命周期阶段。 -
UIViewController (QMUI)
增加qmui_visibleStateDidChangeBlock
用于监听qmui_visibleState
变化。 -
UIViewController (QMUI)
增加qmui_prefersStatusBarHidden
和qmui_preferredStatusBarStyle
用于获取真正的状态栏信息,如果仅使用系统的这两个方法需要额外处理childViewController
的场景。 -
UIView (QMUI)
增加qmui_isControllerRootView
用于判断当前 view 是否为某个 viewController 的 view。 -
UIView (QMUI)
增加qmui_viewController
用于获取当前 view 所在的 viewController。 -
UIView (QMUI)
增加qmui_visible
用于判断该 view 是否处于 window 层级树里,或者所属的 viewController 是否可视。常见的使用场景是例如对键盘、scrollViewDidScroll:
的监听时,常常会在 view 已经不可见时依然触发监听,所以可以用这个属性来过滤。 -
NSString (QMUI)
增加qmui_stringMatchedByPattern:
方法用于通过正则表达式来匹配一段文字。 -
UISearchBar (QMUI)
增加qmui_backgroundView
接口用于获取背景图所在的 view。 -
UIScrollView (QMUI)
增加qmui_scrollToTopUponContentInsetTopChange
用于修改了contentInset.top
后滚动到顶部用,常见的使用场景是在 viewController 里关闭了automaticallyAdjustsScrollViewInsets
或者scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever
的时候设置了自己的contentInset
后要让 scrollView 滚动位置默认处于顶部。 -
UITableView (QMUI)
增加qmui_initialContentInset
用于快速设置自定义的contentInset
并滚到顶部。 -
UIWindow (QMUI)
增加qmui_capturesStatusBarAppearance
属性用于控制该 window 是否有权控制状态栏样式,系统默认认为全屏的UIWindow
即会夺取状态栏的控制权。 -
UIViewController (QMUI)
增加QMUIAppSizeWillChangeNotification
用于在 App 窗口尺寸发生变化时第一时间发出通知,常见使用场景是 iPad Split View 分屏模式。 -
QMUIAlertController
增加dismissKeyboardAutomatically
用于在显示时自动降下键盘,默认为 YES,以保持与系统的UIAlertController
一致,从而避免在键盘升起时显示 alert 可能导致 alert 被键盘盖住的问题。
会带来 QMUI 新旧版本兼容问题的更新
-
重构
QMUIImagePreviewViewController
,将其展示原理从UIWindow
的方式改为普通的 present。 -
废弃
QMUICommonTableViewController tableViewInitialContentInset
和tableViewInitialScrollIndicatorInsets
属性。 -
废弃
[QMUIHelper renderStatusBarStyleLight/Dark]
,请使用系统的preferredStatusBarStyle
代替。
如何适配新版
-
检查项目中用到
QMUIImagePreviewViewController
的地方,将其改为新的使用方法。新用法请查看头文件,或者参考 QMUI Demo 里的QDImagePreviewViewController2
。注意由于新的用法使用系统的presentViewController:animated:completion:
,所以需要使用一个现成的 viewController 去 present,若原代码里获取不到 viewController 的引用,可以使用[QMUIHelper visibleViewController]
代替。 -
全局搜索
tableViewInitialContentInset
、tableViewInitialScrollIndicatorInsets
,将其换成新的[UITableView (QMUI) qmui_initialContentInset]
。 -
全局搜索
renderStatusBarStyleLight
、renderStatusBarStyleDark
,将其替换为系统的preferredStatusBarStyle
,注意后者要求项目的Info.plist
里的View controller-based status bar appearance
改为YES
。 -
将 2.9.2 标记为废弃的以下四个方法删除,并改为使用配置表的
AutomaticCustomNavigationBarTransitionStyle
,或者用customNavigationBarTransitionKey
。 -
如果有使用配置表,请搜索配置表里的
windowLevelQMUIImagePreviewView
并将其删除。
shouldCustomNavigationBarTransitionWhenPushAppearing shouldCustomNavigationBarTransitionWhenPushDisappearing shouldCustomNavigationBarTransitionWhenPopAppearing shouldCustomNavigationBarTransitionWhenPopDisappearing
Bugfix
-
Fixed #365 修复某些情况下使用
QMUIImagePreviewViewController
会命中NSAssert
的 bug。 -
Fixed #439 修复了因系统 bug 导致 QMUIButton 在
setImage:
前就主动访问过imageView
后导致后续布局时imageView.image
依然为nil
,从而导致布局不正确的 bug。 -
Fixed #445 修复
QMUIImagePreviewViewController
在横竖屏切换时可能导致状态栏丢失的 bug。 -
Fixed #446 修复系统 UITabBar 某些场景下忽然不可见的 bug。
-
Fixed #452 修复
QMUIMarqueeLabel
文字没有垂直居中显示的 bug。 -
修复
QMUINavigationController
在某个 viewController 的viewDidAppear
里 push,会被认为上一次 push 的动画尚未结束,所以被拦截,导致 push 失效的 bug。 -
修复
QMUIHelper
的isNotchedScreen
、safeAreaInsetsForDeviceWithNotch
等于全面屏相关的接口在新 iPad Pro 上判断错误的 bug。 -
修复
QMUINavigationBarScrollingAnimator
和QMUINavigationBarScrollingSnapAnimator
因浮点精度可能导致的样式错误。 -
修复隐藏
UINavigationBar
的界面依然会去修改导航栏样式,导致手势返回时导航栏样式错误的 bug。 -
修复开启了
AutomaticCustomNavigationBarTransitionStyle
的情况下在一个界面显示 navigationBar 另一个界面不显示 navigationBar 的时候,切换界面时判断错误的问题。 -
修复
UIImageView (QMUI)
在使用initWithImage:
方法初始化时qmui_smoothAnimation
的默认值错误的 bug。
其他
-
更新
[QMUIHelper isHighPerformanceDevice]
方法的判断,iPad Air 2 及以上、iPhone 8 及以上都认为是高性能设备。 -
#410 #422 这两个系统 bug 实测在 iOS 12.1.1 里已被修复,因此 QMUI 2.9.3 版本里已对 12.1.1 及以后的系统屏蔽补丁代码。
QMUI iOS 是一个致力于提高项目 UI 开发效率的解决方案,其设计目的是用于辅助快速搭建一个具备基本设计还原效果的 iOS 项目,同时利用自身提供的丰富控件及兼容处理, 让开发者能专注于业务需求而无需耗费精力在基础代码的设计上。不管是新项目的创建,或是已有项目的维护,均可使开发效率和项目质量得到大幅度提升。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- quickly 1.3 版本发布,CSS 前端框架
- WebMagic 0.7.1 版本发布,Java 爬虫框架
- PHP 开发框架 TimoPHP 1.7.0 版本发布
- WebMagic 0.7.0 版本发布,Java 爬虫框架
- WebMagic 0.7.2 版本发布,Java 爬虫框架
- DiQuick Web 前端框架 1.2.3 版本更新
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。