QMUI / QMUI_iOS框架学习(六)

本文详细解析了微信导航条的加载样式实现方法,重点介绍了QMUICommonViewController类与QMUINavigationTitleView组件的交互机制,包括如何通过runtime方法替换布局、解决系统导航栏的bug,并实现了不同状态下的加载动画。

微信的导航条的中心栏是可以处理多种状态的显示,有导航栏的界面都可以使用,研究一下他的源码。
拆出来花了很大的功夫,原因是相互之间层级引用太复杂了 。
有个QMUICommonViewController 类 里面引用了#import "QMUINavigationController.h" QMUINavigationTitleView

其中 QMUINavigationController 不仅管理QMUINavigationTitleView 的代理回调,点击相应实际同时给QMUICommonViewController提供了pop 和push的时机,等其他的部分。

QMUICommonViewController 中又有一个属性

@property(nonatomic,strong,readonly) QMUINavigationTitleView *titleView;

来替换了本身的titleView

QMUINavigationTitleView

要抽离出来,观察了一下,整个分为几部分
UINavigationBar (QMUI)
这里用了runtime的方法交换,来替换UINavigationBar的layoutSubviews方法, 来解决系统导航栏的bug

然后是布局部分
总体包括

1.UIActivityIndicatorView *loadingView
旋转菊花
2.UILabel *titleLabel 主标题
3.UILabel *subtitleLabel 副标题
4.UIView *accessoryView 展开收起的三角形

然后做了两套布局
主标题在副标题在下
主标题和副标题在一起的布局

剩余的就是参数设置了,以及去掉一些其他界面的引用
,然后写个控制器融进去试试看,大功告成。

这里写图片描述

最后说下为什么使用这种loading样式。因为用户可以接受这样的界面
导航栏很醒目,网络状态不好,或者在连接中,用户就会耐心等待了。使用hub的话让用户感觉等待的很着急。

又添加了页面的loading
比如说连接到了一台设备,
但是设备底下的数据还没有请求到。
这时候导航栏就不应该继续转了,数据应该变为 收取中….
要给用户感知到已经连接到设备,
在请求数据的过程。
因此在界面的loading也是很有必要的
此时的loading也一样要小一点,让用户感觉
可以再等等的感觉。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值