魏名华

不要偷懒,做更好的自己

Nothing


No Welcome Message

不错的QMUI_iOS

腾讯开源的框架 QMUI_iOS

文档

很多不错的封装,可以学习下里面的代码

另:QMUI有许多开源项目

QMUI 团队

QMUI 团队

QM应该是QQMail的意思吧

分为有3大块:Web、iOS、Android

QMUI Web

作为一个框架,QMUI Web 主要提供了四种能力来提升 UI 开发的效率与质量。分别用于快速实现项目 UI,快速解决重复劳动力工作,CSS 的预处理和复杂的组件参考四个方面,这也是 QMUI Web 的使用目标。

不知道干嘛的,暂时不管了

QMUI_iOS

demo

官方demo: QMUIDemo_iOS

换肤

QDThemeManager 发通知,基类 QDCommonViewController 及 QDCommonTableViewController 接收并处理通知,收到后转到一个自定义的协议方法,子类实现刷新 UI,比如 QDCommonGridButton 按钮修改 tintColor 并刷新,没什么特殊的。包括按钮刷新tintColor在内,这是demo提供的功能,QMUI_iOS并没有提供

QMUICommonViewController

作为项目内所有 UIViewController 的基类,封装了一些常用的操作,没有什么特殊的,注释写的好,有summary、discussion、note、see等

QMUICommonTableViewController

有用一些宏

- (instancetype)initWithStyle:(UITableViewStyle)style NS_DESIGNATED_INITIALIZER;

- (void)didInitializeWithStyle:(UITableViewStyle)style NS_REQUIRES_SUPER;

QMUIButton

支持按钮内图片和文字的各种位置和间距

实现是重写 layoutSubviews 方法,计算 image 和 text 的 frame,最后设置给 imageView 和 Label

支持 IB ?

重写了 sizeThatFits 和 intrinsicContentSize

QMUILinkButton

支持下划线

实现是添加一个 CALayer,设置 layer 的 frame 和 background

QMUIGhostButton、QMUIFillButton

“幽灵”按钮,也即背景透明、带圆角边框的按钮

其中,圆角是在 layoutSublayersOfLayer 方法内实现的,为什么放到这里,是为了在iOS11以下,实现自定义圆角(某几个角为圆角),而在 UIView (QMUI_CornerRadius) swizzle 了这个方法 layoutSublayersOfLayer,

QMUINavigationButton

抹平各版本iOS系统的样式差异,不过我们的项目是直接用 customView 实现的,更简单

QMUIToolbarButton

并无特别,只是做了统一的字体等配置而已

QMUILabel

UINavigationController+NavigationBarTransition

/**
 *  因为系统的UINavigationController只有一个navBar,所以会导致在切换controller的时候,如果两个controller的navBar状态不一致(包括backgroundImgae、shadowImage、barTintColor等等),就会导致在刚要切换的瞬间,navBar的状态都立马变成下一个controller所设置的样式了,为了解决这种情况,QMUI给出了一个方案,有四个方法可以决定你在转场的时候要不要使用自定义的navBar来模仿真实的navBar。
 */

一样是使用假的UINavigationBar实现的