BTHelp
开发中常用的一些工具类,旨在使用特定的工具类快速完成特定的功能。
使用方法
pod install 'BTHelp'
BTModel
自动解析JSON的model,继承自该类并添加对象的json属性即可
TestModel.h
#import "BTModel.h"
@class TestChildModel;
NS_ASSUME_NONNULL_BEGIN
@interface TestModel : BTModel
@property (nonatomic, strong) NSString * title;
@property (nonatomic, strong) TestChildModel * child;
@property (nonatomic, strong) NSMutableArray * childs;
@end
@interface TestChildModel : BTModel
@property (nonatomic, strong) NSString * content;
@end
NS_ASSUME_NONNULL_END
TestModel.m
#import "TestModel.h"
@implementation TestModel
- (void)initSelf{
[super initSelf];
self.classDict = @{@"child":TestChildModel.class,@"childs":TestChildModel.class};
}
@end
@implementation TestChildModel
@end
解析
NSDictionary * dict = @{@"title":@"三国演义",@"child":@{@"content":@"东汉末年"},@"childs":@[@{@"content":@"分三国"},@{@"content":@"烽火连天不休"}]};
TestModel * model = [TestModel modelWithDict:dict];
NSLog(@"下个断点看有没有解析成功");
如果是字典数组则调用此方法返回数组的model
+(NSMutableArray*)modelWithArray:(NSArray*)array;
同样支持将model转为字典数据
-(NSDictionary*)autoDataToDictionary;
BTTimerHelp
基于NSTimer封装的计时器,如果您需要精确的计时器功能,请使用gcd,该类会提供快捷的启动、暂停、结束和重设计时器回调间隔功能
self.timer = [[BTTimerHelp alloc]init];
self.timer.changeTime = 1;
//每隔一秒回调一次
self.timer.block = ^{
};
[self.timer start];
暂停
[self.timer pause];
如果您需要更改特定时刻的计时间隔
self.timer.changeTime = 3;
[self.timer start];
使用完毕后请记得销毁
[self.timer stop];
帮图标帮助
快速选择头像辅助类,相册、相机权限请在info.plist
中添加,权限问题也会在内部自动判断处理
初始化使用
self.iconHelp = [[BTIconHelp alloc] init:self];
self.iconHelp.block = ^(UIImage *image) {
};
[self.iconHelp go];
帮键盘帮助
在viewDidAppear
中进行初始化,此时布局已完成,可以避免一些坐标计算错误的问题,在初始化之前必须确保界面已经完成布局
- (void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
if (self.help == nil) {
self.help = [[BTKeyboardHelp alloc] initWithShowView:self.textField moveView:self.displayView margin:0];
[self.textField becomeFirstResponder];
}
}
在vc
的显示、隐藏生命周期方法中进行暂停、恢复,防止进入其他页面后使用键盘弹出后造成的影响
- (void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
self.help.isPause = YES;
}
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
self.help.isPause = NO;
}
帮权限
权限获取工具类,注意首先要是在info.plist
中添加对应的权限使用描述文字
[[BTPermission share] getMicPermission:@"当前暂无麦克风权限,请打开后重试" success:^{
}];
[[BTPermission share] getAlbumPermission:^{
}];
帮苹果支付
使用方式见PayViewController
,目前仅支持消耗类项目的购买,不支持恢复购买、订阅
NSDate+BTDate.h
提供更便捷的NSDate
对象使用方式
初始化,根据时区获取对应的日期,避免中国时区少8
小时的问题
+ (instancetype)initLocalDate;
NSDateFormatter
初始化方式
//传入2010-01-01 这个字符串获取date
+ (NSDate*)dateYMD:(NSString*)dateStr;
//传入2010-01-01 13:04:34 这个字符串获取date
+ (NSDate*)dateYMDHMS:(NSString*)dateStr;
//传入2010-01-01 13:04 这个字符串获取date
+ (NSDate*)dateYMDHM:(NSString*)dateStr;
//传入日期,以及格式化样式获取date
+ (NSDate*)dateFromStr:(NSString*)dateStr formatter:(NSString*)formatterStr;
获取格式化字符串
- (NSString*)dateStr:(NSString*)formater;
其他快捷使用方法见类中注释
帮工具
工具类,集合常用方法,见注释
BTDownloadMananger
下载工具类,基于NSURLSessionDownload
,在主动调用停止下载的情况下可以实现断点续传。无法实现断点续传情况:断网、杀掉应用
加入下载,如果当前下载数量过多会等待下载
[[BTDownloadMananger share] downLoad:@"下载地址"];
加入回调监听
[[BTDownloadMananger share] addDelegate:self];
实现BTDownloadDelegate
监听下载回调
- (void)downloadStateChange:(BTDownloadModel *)model;
- (void)downloadProgressChange:(BTDownloadModel *)model;
- (void)downloadError:(BTDownloadModel *)model error:(NSError*)error;
不用的时候移除监听
[[BTDownloadMananger share] removeDelegate:self];
取消下载
[[BTDownloadMananger share] cancel:@"下载地址"];
是否正在下载
[[BTDownloadMananger share] isDownloading:@"下载地址"];
BTLocation
定位工具类,待完善。