QMUI / QMUI_iOS框架学习(六)

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

微信的导航条的中心栏是可以处理多种状态的显示,有导航栏的界面都可以使用,研究一下他的源码。
拆出来花了很大的功夫,原因是相互之间层级引用太复杂了 。
有个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也一样要小一点,让用户感觉
可以再等等的感觉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值