[ iOS 开发] LRFactory 之 LRVCExtend,对 ViewController 进行的扩展

LRFactory

这个库是基于自己以往 iOS 开发的工作经历,对一些常用的控件做的一些封装,提供了一些有意思的扩展,有兴趣的朋友可以了解一下,并希望能指出不足之处以及未考虑完善的地方。大家互相学习进步。

LRVCExtend

这个模块针对 ViewController 进行了一些有帮助的扩展

可以帮助你更快的实现需求

如何使用

//通过 Cocoapods 安装
pod 'LRFactory/LRVCExtend'

//引入头文件
#import <LRVCExtend.h>

具体扩展内容如下


LRFAppear

针对 Appear, Disappear 进行的扩展,可以帮助你判断该次 Appear 是否是第一次 Appear,该次 Disappear 是否是最后一次 Disappear

你只需要在子类按需重写以下这三个方法并添上你的相关业务。

// 需子类重写, 默认空实现
// 页面将要第一次显示
- (void)lrf_viewWillAppearFirstTime:(BOOL)animated;
// 页面将要永远消失
- (void)lrf_viewWillDisappearForever:(BOOL)animated;
// 页面已经永远消失
- (void)lrf_viewDidDisappearForever:(BOOL)animated;

当然,这里也提供了 block 的方式,让你可以随时可以添加业务。你只需要在需要的时候添加 action 就可以完成。

// 添加页面将要显示的事件
- (void)lrf_addActionWhileViewWillAppear:(void(^)(BOOL animated, BOOL isFirstTime))action;
// 添加页面已经显示的事件
- (void)lrf_addActionWhileViewDidAppear:(void(^)(BOOL animated))action;
// 添加页面将要消失的事件
- (void)lrf_addActionWhileViewWillDisappear:(void(^)(BOOL animated, BOOL isForever))action;
// 添加页面已经消失的事件
- (void)lrf_addActionWhileViewDidDisappear:(void(^)(BOOL animated, BOOL isForever))action;

例:

UIViewController *vc = [[UIViewController alloc] init];

// 当 vc willAppear 的时候将会调用打印方法
[vc lrf_addActionWhileViewWillAppear:^(BOOL animated, BOOL isFirstTime) {
    NSLog(@"ViewWillAppear isFirstTime:%d", isFirstTime);
}];

LRFGesture

提供了一个属性,可以在有导航的页面里,让你很方便的决定一个页面是否支持向右滑动返回上一个页面

@property (nonatomic, assign) BOOL lrf_canGesturePop;//手势右滑返回, 默认YES

当设置为 YES 时,支持右滑返回,默认 YES

当设置为 NO 时,禁用右滑返回

例:

UIViewController *vc = [[UIViewController alloc] init];

// 禁用 vc 的右滑返回
vc.lrf_canGesturePop = NO;

LRFPresent

对 present dismiss 方法进行扩展,可以方便的添加额外信息供你使用,并提供 willDismiss 及 didDismiss 的block供你使用

//  弹出界面,带弹出界面消失的回调信息
- (void)lrf_presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^ __nullable)(void))completion willDismissCallback:(void(^ __nullable)(id _Nullable info))willDismissCallback didDismissCallback:(void(^ __nullable)(id _Nullable info))didDismissCallback;

//  消失界面,带回调信息
- (void)lrf_dismissViewControllerAnimated:(BOOL)flag completion:(void (^ __nullable)(void))completion info:(id _Nullable)info;

例:

// present 视图
[vcA lrf_presentViewController:vcB animated:YES completion:^{
    NSLog(@"completion");
} willDismissCallback:^(NSDictionary * _Nullable info) {
    NSLog(@"willDismissCallback %@", info);
} didDismissCallback:^(NSDictionary * _Nullable info) {
    NSLog(@"didDismissCallback %@", info);
}];

// dismiss 视图
[vcB lrf_dismissViewControllerAnimated:YES completion:^{
    NSLog(@"completion");   
} info:@{@"info":@"something interesting"}];

LRFPush

提供了一个有意思的属性,通过他,你能很方便的在导航返回时,跳过一些你想跳过的页面

@property (nonatomic, assign) BOOL lrf_popIgnore;// pop 时忽略该页面, 默认NO

例:

// 导航 push 到 vcA
[navigationController pushViewController:vcA animated:YES];

// 导航 push 到 vcB
[navigationController pushViewController:vcB animated:YES];

// 设置 vcB pop 时忽略的属性为 YES ,
// 建议在 push 下一个页面时候设置该属性,也是这个时候你能够知道 push 到下个页面时,该页面是否还有存在的必要
vcB.lrf_popIgnore = YES;

// 导航 push 到 vcC
[navigationController pushViewController:vcC animated:YES];

// 导航返回上一个页面,此时页面回到 vcA ,而 vcB 已经被忽略了
[navigationController popViewControllerAnimated:YES];

LRFTabBar

提供了一个类方法,能够帮你当有 tabbar 的时候,导航 push 之后自动隐藏 tabbar

+ (void)lrf_autoHidesTabBar;

例:

// 只需在项目启动的时候配置一下就可以了
[UIViewController lrf_autoHidesTabBar];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,651评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,468评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,931评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,218评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,234评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,198评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,084评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,926评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,341评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,563评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,731评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,430评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,036评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,676评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,829评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,743评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,629评论 2 354