- CPX_BaseLib
ios端組件化開(kāi)發(fā)基本庫(kù)邑飒,所有項(xiàng)目需依賴鞍爱。(本庫(kù)只是針對(duì)項(xiàng)目作出常用的功能封裝以及基本適配處理涕蜂,有些類可以根據(jù)不同項(xiàng)目不同需求再次封裝)
傳送門:gitHub 鏈接
基本規(guī)范
為了項(xiàng)目的規(guī)范析校,所以我們?cè)陂_(kāi)發(fā)的時(shí)候需要統(tǒng)一一些方法的命名及方法的使用
1. 初始化方法
* - (void)initUI;/**UI初始話*/
* -(void)initDataSource; /**數(shù)據(jù)源初始話*/
* - (void)loadData;/**加載數(shù)據(jù)*/
2. 初始化方法第二級(jí)礁哄,默認(rèn)放在initUI下
* - (void)initViews;/**初始化View*/
* - (void)initNavigation;/**初始化導(dǎo)航欄*/
* - (void)initOtherViews;/**初始化其他view*/
3.命名以駝峰原則长酗,以功能名字命名,見(jiàn)名思意桐绒,并配上注釋夺脾。
組成部件
- BaseClass
- Configration
- Categories
- Extensions
- NetworkManager
- ThirdPart
- Utls
BaseClass
CPXBaseAlertView 用于自定義彈窗的所有父類
基本使用方法 創(chuàng)建一個(gè)View繼承CPXBaseAlertView 使用時(shí)調(diào)用
-(void)show:(BOOL)animate 即可
常用屬性 removeOnTouchOutside (點(diǎn)擊空白區(qū)域是否關(guān)閉彈窗)
CPXBaseTableView 用于自定義UITableView的所有父類
初始化方式 [CPXBaseTableView new] 內(nèi)部已經(jīng)處理不同系統(tǒng)版本適配問(wèn)題
CPXBaseView 用于所有自定義視圖的父類
-(CPXBaseViewController*)getViewcontrollerView獲取當(dāng)前的父控制器
BaseVC
一 CPXBaseNavigationController 基類UINavigationController控制器(此類中處理了app因?yàn)閷?dǎo)航欄的側(cè)滑出現(xiàn)假死的情況以及實(shí)現(xiàn)了各種代理方法,所以所有的導(dǎo)航欄必須繼承此類)
二 CPXBaseTabBarController 基類UITabBarController控制器(此類是留的一個(gè)入口茉继,以便自定義tabBar的時(shí)候做一些相應(yīng)的處理)
三 CPXBaseViewController 用于自定義控制器的所有父類
1.規(guī)范了UI以及data的初始化方法咧叭,以及處理了導(dǎo)航欄的統(tǒng)一設(shè)置,并留了處理狀態(tài)欄顏色的api烁竭。
2.初始化了一個(gè)繼承于CPXBaseTableView的tableiview菲茬,用于快速創(chuàng)建tableview并為以后的
3.初始化了數(shù)據(jù)源的一些變量:
@property (nonatomic,strong)NSMutableArray * dataArray;/**<所有帶有列表的頁(yè)面全部使用該數(shù)據(jù)項(xiàng)*/
@property (nonatomic,assign)BOOL isDownRefresh;/**< 是否是下拉刷新 默認(rèn)NO*/
@property (nonatomic,assign)int page;/**<分頁(yè) 默認(rèn)為0*/
@property (nonatomic,assign)int pageSize;/**<每個(gè)分頁(yè)的數(shù)據(jù)量長(zhǎng)度*/
@property(nonatomic,strong)CPXNetworkManagerModel *netConfigmodel;/**<網(wǎng)絡(luò)請(qǐng)求配置model*/
4.導(dǎo)航欄的處理:
導(dǎo)航欄返回按鈕 - (void)initLeftBackNaviButton
導(dǎo)航欄頂部透明色 - (void)initDefaultNavigation
BaseModel
CPXBaseModel 所有自定義Model的父類
Configration
GlobalDefine.h 常用的一些占位圖與通用展示文字宏文件
GlobalPCH.pch 用于引入BaseLib庫(kù)
Import.h 用于導(dǎo)入創(chuàng)建的自定義類、CateGory派撕、Exrension婉弹、第三方工具類
IphoneXConfig.h 用于iPhone機(jī)型的UI適配
SystemConfig.h 系統(tǒng)版本適配、啟動(dòng)宏终吼、各類通知相關(guān)
UIConfig.h 全局UI配置 顏色設(shè)置镀赌、app view通用背景顏色、navigationBar顏色衔峰、APP主題色等
Categories
UIBarButtonItem+Badge.h
用于UIBarButtonItem的角標(biāo)設(shè)置(常用屬性如下:)
@property (nonatomic) UIColor *badgeBGColor;/**< 背景色*/
@property (nonatomic) UIColor *badgeTextColor;/**< 字體顏色*/
@property (nonatomic) UIFont *badgeFont;/**< 字體*/
@property (nonatomic) CGFloat badgePadding;/**< 間隔*/
@property (nonatomic) CGFloat badgeMinSize;/**< 最小size*/
@property (nonatomic) CGFloat badgeOriginX;/**< x偏移*/
@property (nonatomic) CGFloat badgeOriginY;/**<y偏移 */
UIImage+Color.h
用于color轉(zhuǎn)image佩脊、image轉(zhuǎn)color、調(diào)整圖片方向垫卤、圖片無(wú)損壓縮威彰、壓縮圖片到指定文件大小(kb)、將圖片裁剪到制定像素穴肘、傳入需要的占位圖尺寸 獲取占位圖
+ (UIImage *)cpx_imageWithColor:(UIColor *)color;/**< color轉(zhuǎn)image*/
+ (UIColor *)cpx_imageTocolor:(UIImage *)image withrect:(CGRect)rect; /**< image轉(zhuǎn)color*/
+ (UIImage*)cpx_fixOrientation:(UIImage*)aImage; /**< UIImagePickerController返回的照片帶有方向信息歇盼,如果直接上傳到服務(wù)器的話,可能造成旋轉(zhuǎn)了90°(當(dāng)手機(jī)豎直拍照)的情況评抚。而且如果直接取其jpeg數(shù)據(jù)豹缀,或者將UIImage保存到本地的話,就會(huì)丟失這個(gè)方向信息慨代,導(dǎo)致下一次讀取出來(lái)圖片就是顛倒的*/
+ cpx_reSizeImageData:(UIImage *)sourceImage
maxImageSize:(CGFloat)maxImageSize
maxSizeWithKB:(CGFloat) maxSize;/**< 圖片無(wú)損壓縮 */
+(NSData *)cpx_compressOriginalImage:(UIImage *)image
toMaxDataSizeKBytes:(CGFloat)size; /**<壓縮圖片到指定文件大小(kb)*/
+ (UIImage*)cpx_imageByScalingAndCroppingForImage:(UIImage *)sourceImage Size:(CGSize)targetSize; /**< 將圖片裁剪到制定像素 */
+ (UIImage *)cpx_placeholderImageWithSize:(CGSize)size ImageSize:(CGSize )imageSize; /**< 獲取不同尺寸的占位圖*/
NSDictionary+Basic.h 用于處理不安全字典(null邢笙,@“” 等的處理)
+(NSDictionary*)cpx_safeDictionaryByObject:(id)unsaveObj;
NSDictionary+log.h
用于控制臺(tái)打印中文(因?yàn)榫W(wǎng)絡(luò)請(qǐng)求的數(shù)據(jù)在控制臺(tái)顯示出來(lái)是UTF-8格式,只需導(dǎo)入該頭文件即可打印中文信息)
UIScrollView+Basic.h 用于處理取消scrollview刷新侍匙、添加頭部刷新(自動(dòng)處理網(wǎng)絡(luò)請(qǐng)求配置model氮惯,關(guān)閉菊花的開(kāi)關(guān)以及打開(kāi)是手動(dòng)刷新)、添加尾部刷新(自動(dòng)處理網(wǎng)絡(luò)請(qǐng)求配置model,關(guān)閉菊花的開(kāi)關(guān)以及打開(kāi)是手動(dòng)刷新)
-(void)cpx_endRefresh; /**< 取消一切刷新(包括上拉下拉)*/妇汗、
-(void)cpx_addHeaderRefresh:(MJRefreshComponentRefreshingBlock)refreshingBlock withModel:(CPXNetworkManagerModel*)netModel; /**< 添加頭部刷新(自動(dòng)處理網(wǎng)絡(luò)請(qǐng)求配置model帘不,關(guān)閉菊花的開(kāi)關(guān)以及打開(kāi)是手動(dòng)刷新)*/
-(void)cpx_addFooterRefresh:(MJRefreshComponentRefreshingBlock)refreshingBlock withModel:(CPXNetworkManagerModel*)netModel; /**< 添加尾部刷新(自動(dòng)處理網(wǎng)絡(luò)請(qǐng)求配置model,關(guān)閉菊花的開(kāi)關(guān)以及打開(kāi)是手動(dòng)刷新)*/
UIButton+Badge.h 用于UIButton的角標(biāo)設(shè)置
用于UIBarButtonItem的角標(biāo)設(shè)置(常用屬性如下:)
@property (nonatomic) UIColor *badgeBGColor;/**< 背景色*/
@property (nonatomic) UIColor *badgeTextColor;/**< 字體顏色*/
@property (nonatomic) UIFont *badgeFont;/**< 字體*/
@property (nonatomic) CGFloat badgePadding;/**< 間隔*/
@property (nonatomic) CGFloat badgeMinSize;/**< 最小size*/
@property (nonatomic) CGFloat badgeOriginX;/**< x偏移*/
@property (nonatomic) CGFloat badgeOriginY;/**<y偏移 */
UIButton+ImageTitleSpacing.h 用于設(shè)置button的titleLabel和imageView的布局樣式杨箭,及間距
其中包括了四種樣式
MKButtonEdgeInsetsStyleTop, // image在上寞焙,label在下
MKButtonEdgeInsetsStyleLeft, // image在左,label在右
MKButtonEdgeInsetsStyleBottom, // image在下互婿,label在上
MKButtonEdgeInsetsStyleRight // image在右捣郊,label在左
- (void)cpx_layoutButtonWithEdgeInsetsStyle:(MKButtonEdgeInsetsStyle)style imageTitleSpace:(CGFloat)space;
UIButton+touch.h 用于處理按鈕的暴力點(diǎn)擊事件(防止過(guò)快重復(fù)點(diǎn)擊多次觸發(fā)點(diǎn)擊事件,默認(rèn)0.5秒間隔時(shí)間)
@property (nonatomic, assign) NSTimeInterval timeInterval;/**設(shè)置點(diǎn)擊時(shí)間間隔*/
@property (nonatomic, assign) BOOL isIgnore;/** 用于設(shè)置單個(gè)按鈕不需要被hook*/
UIButton+TimerFire.h 用于展示倒計(jì)時(shí)按鈕(獲取驗(yàn)證碼按鈕)
-(void)fireForTimerWithTimeCount:(NSInteger)count; /**開(kāi)始倒計(jì)時(shí) */
-(void)setBorderColorAndTitleColor;/**設(shè)置按鈕邊框顏色和圓角擒悬、title */
UIView+AZGradient.h 一句代碼實(shí)現(xiàn)View漸變色
- (void)az_setGradientBackgroundWithColors:(NSArray<UIColor *> *_Nullable)colors locations:(NSArray<NSNumber *> *_Nullable)locations startPoint:(CGPoint)startPoint endPoint:(CGPoint)endPoint
UIView+Basic.h 主要是高效處理view的圓角以及漸變色問(wèn)題(響應(yīng)的layer也添加了對(duì)應(yīng)的api)
/** 漸變色方向
- GradientDirectionHorizontal: 水品方向
- GradientDirectionVertical: 垂直方向
*/
typedef NS_ENUM(NSInteger,GradientDirection) {
GradientDirectionHorizontal = 0,
GradientDirectionVertical
};
-(UIImage *)cpx_screenShotViewWith:(CGRect)rect;/**對(duì)屏幕進(jìn)行截屏 */
- (BOOL)cpx_isDisplayedInScreen;/** 判斷view是否在屏幕上 */
-(void)cpx_addPathCorner:(UIRectCorner)corner cornerRadis:(CGFloat)cornerRadis;/**添加貝塞爾圓角--自動(dòng)布局必須完成布局才能調(diào)用 */
-(void)cpx_setCorner:(CGFloat)cornerRadis;/**普通方式切圓角 */
- (void)cpx_roundedCornerWithRadius:(CGFloat)radius cornerColor:(UIColor *)color;/**繪制一個(gè)帶背景色的圓角 */
- (void)cpx_roundedCornerWithRadius:(CGFloat)radius cornerColor:(UIColor *)color corners:(UIRectCorner)corners;/**繪制一個(gè)帶背景色的圓角 ,并可以自己選擇圓角的位置*/
- (void)cpx_roundedCornerWithCornerRadii:(CGSize)cornerRadii cornerColor:(UIColor *)color corners:(UIRectCorner)corners borderColor:(UIColor *)borderColor borderWidth:(CGFloat)borderWidth;/** 設(shè)置一個(gè)帶邊框的圓角,并可設(shè)置邊框顏色和寬度模她,以及圓角背景和位置*/
-(void)cpx_addGradientColorWithColor_begin:(UIColor * )color_begin colorEnd:(UIColor * )color_end gradientDirection:(GradientDirection)direction;/** 添加漸變色 --- 添加backgourdcolor的形式*/
UIView+GetController.h 用于獲取view的所在的controller、獲取view所在UITableViewCell懂牧、根據(jù)點(diǎn)擊的視圖 、獲取當(dāng)前indexPath
-(UIViewController * )cpx_getSuperControllerOfTheView;/** 獲取view的所在的controller*/
-(UITableViewCell * )cpx_getSuperContainerCell;/**獲取view所在UITableViewCell */
- (NSIndexPath *)cpx_indexPathInTable:(UITableView *)tableView; /** 根據(jù)點(diǎn)擊的視圖 尊勿、獲取當(dāng)前indexPath*/
UIView+Storyboard.h 用于給xib和SB增加額外的屬性:邊界顏色僧凤、邊界寬度、圓角
@property (nonatomic) IBInspectable UIColor *borderColor;//邊界顏色
@property (nonatomic) IBInspectable CGFloat borderWidth;//邊界寬度
@property (nonatomic) IBInspectable CGFloat cornerRadius;//圓角
UIBarButtonItem+SXCreate.h 處理自定義導(dǎo)航欄按鈕帶來(lái)的偏移以及點(diǎn)擊范圍等問(wèn)題*
+(UIBarButtonItem *)cpx_itemWithTarget:(id)target
action:(SEL)action
image:(UIImage *)image;/** 根據(jù)圖片生成UIBarButtonItem*/
+(UIBarButtonItem *)cpx_itemWithTarget:(id)target
action:(SEL)action
nomalImage:(UIImage *)nomalImage
higeLightedImage:(UIImage *)higeLightedImage
imageEdgeInsets:(UIEdgeInsets)imageEdgeInsets; /** 根據(jù)圖片與文字生成UIBarButtonItem*/
+(UIBarButtonItem *)cpx_itemWithTarget:(id)target
action:(SEL)action
title:(NSString *)title
titleEdgeInsets:(UIEdgeInsets)titleEdgeInsets ;/** 根據(jù)文字生成UIBarButtonItem*/
+(UIBarButtonItem *)cpx_fixedSpaceWithWidth:(CGFloat)width; /**用作修正位置的UIBarButtonItem */
CPXBaseNavigationController+Smoonth.h 用于處理平滑處理導(dǎo)航欄側(cè)滑漸變效果(其中給UIViewController添加了兩個(gè)屬性元扔,便于快速設(shè)置導(dǎo)航欄透明度以及顏色)
@property (nonatomic, assign) CGFloat navBarBgAlpha;//設(shè)置導(dǎo)航欄透明度
@property (nonatomic, strong) UIColor *navBarTintColor;//導(dǎo)航欄背景色
UITextView+Placeholder.h 用于為UITextView增加 paceHoder屬性(同樣適用于xib以及storyboard)
@property (nonatomic, readonly) UILabel *placeholderLabel; /** 只讀屬性*/
@property (nonatomic, strong) IBInspectable NSString*placeholder;/** 適用于xib以及storyboard */
@property (nonatomic, strong) NSAttributedString *attributedPlaceholder; /** 富文本格式的占位 */
@property (nonatomic, strong) IBInspectable UIColor *placeholderColor;/** 適用于xib以及storyboard */
UILabel+init.h 用于UILabel的快速創(chuàng)建方式
+(UILabel *)cpx_LabelWithTextNoFrameText:(NSString *)text backgroundColor:(UIColor *)backgroundColor font:(UIFont *)font textColor:(UIColor *)textColor textAlignment:(NSTextAlignment)textAlignment;/** 快速創(chuàng)建UILabel */
+(UILabel *)cpx_LabelWithTextNoFrameText:(NSString *)text textColor:(UIColor *)textColor backgroundColor:(UIColor *)backgroundColor font:(UIFont *)font textAlignment:(NSTextAlignment)textAlignment;/** 快速創(chuàng)建UILabel */
+(UILabel *)cpx_LabelWithText:(NSString *)text textColor:(UIColor *)textColor backgroundColor:(UIColor *)backgroundColor frame:(CGRect)frame font:(UIFont *)font textAlignment:(NSTextAlignment)textAlignment;/** 快速創(chuàng)建UILabel */
UIImageView+Basic.h 用于異步加載圖片(對(duì)sdwebImage的二次封裝)
- (void)cpx_downloadImage:(NSString *)urlStr; /**異步加載圖片(默認(rèn)占位圖) */
- (void)cpx_downloadImage:(NSString *)urlStr placeholder:(NSString *)imageName;/** 異步加載圖片(手動(dòng)設(shè)置占位圖) */
- (void)cpx_downloadImage:(NSString *)urlStr placeholderImage:(UIImage *)image;/** 異步加載圖片(手動(dòng)設(shè)置占位圖) */
-(void)cpx_downloadImage:(NSString *)urlStr placeholderSize:(CGSize)imageSize;/** 異步加載圖片(手動(dòng)設(shè)置占位圖躯保,并可設(shè)置占位圖大小) */
NSString+AttributedString.h 用于富文本的處理(快速添加富文本屬性)
-(NSAttributedString*)underLineStyleSingle;/** 添加下劃線*/
-(NSMutableAttributedString*)centerLineStyleSingle; /**添加中劃線 */
NSString+Basic.h 用于不安全的字符串轉(zhuǎn)換為安全字符串、獲取字符串的size澎语、字典轉(zhuǎn)字json符串途事、數(shù)組轉(zhuǎn)json字符串、json字符串轉(zhuǎn)數(shù)組等
+(NSString*)cpx_safetyStringByObject:(id)unsafeObj; /** 不安全的字符串轉(zhuǎn)換為安全字符串 */
- (CGSize)cpx_sizeWithFont:(UIFont *)font
maxSize:(CGSize)maxSize;/**獲取字符串的寬高 */
- (CGSize)cpx_sizeWithFontSize:(CGFloat )fontSize
maxSize:(CGSize)maxSize; /**獲取字符串的寬高 */
+ (NSString*)cpx_stringWithJsonDictionary:(NSDictionary *)dic; /** 字典轉(zhuǎn)字json符串 */
+ (NSString *)cpx_StringWithArray:(NSArray *)array; /** 數(shù)組轉(zhuǎn)json字符串 */
+ (NSDictionary *)cpx_dictionaryWithJsonString:(NSString *)jsonString;/** json字符串轉(zhuǎn)數(shù)組 */
+ (NSArray*)cpx_arrayWithJsonString:(NSString*)jsonString;/** json字符串轉(zhuǎn)數(shù)組*/
- (NSString *)cpx_pinyin;/** 漢字的拼音 */
-(NSAttributedString*)cpx_underLineStyleSingle;/** 生成帶有下劃線的富文本*/
-(NSMutableAttributedString*)cpx_centerLineStyleSingle;/**生成帶有中劃線的富文本 */
+(NSString * )cpx_americaMoneyFormatter:(NSNumber * )number; /** 美國(guó)千分位數(shù)字*/
+(NSString *)cpx_urlEncode:(NSString * )url_origin; /** 圖片urlEncode */
NSString+STRegex.h 用于正則表達(dá)式相關(guān)處理
- (BOOL)cpx_isValidEmail; /** 郵箱驗(yàn)證 */
- (BOOL)cpx_isValidPhoneNum;/** 手機(jī)號(hào)碼驗(yàn)證 */
- (BOOL)cpx_isValidCarNo;/** 車牌號(hào)驗(yàn)證 */
- (BOOL)cpx_isValidUrl;/** 網(wǎng)址驗(yàn)證 */
- (BOOL)cpx_isValidPostalcode;/** 郵政編碼 */
- (BOOL)cpx_isValidChinese;/** 純漢字 */
- (BOOL)cpx_isValidIP; /** 是否符合IP格式擅羞,xxx.xxx.xxx.xxx */
- (BOOL)cpx_isValidIdCardNum; /** 身份證驗(yàn)證 refer to http://blog.csdn.net/afyzgh/article/details/16965107*/ */
- (BOOL)cpx_isValidWithMinLenth:(NSInteger)minLenth
maxLenth:(NSInteger)maxLenth
containChinese:(BOOL)containChinese
firstCannotBeDigtal:(BOOL)firstCannotBeDigtal;/** 是否符合最小長(zhǎng)度尸变、最長(zhǎng)長(zhǎng)度,是否包含中文,首字母是否可以為數(shù)字 */
- (BOOL)cpx_isValidWithMinLenth:(NSInteger)minLenth
maxLenth:(NSInteger)maxLenth
containChinese:(BOOL)containChinese
containDigtal:(BOOL)containDigtal
containLetter:(BOOL)containLetter
containOtherCharacter:(NSString *)containOtherCharacter
firstCannotBeDigtal:(BOOL)firstCannotBeDigtal;/** 是否符合最小長(zhǎng)度减俏、最長(zhǎng)長(zhǎng)度召烂,是否包含中文,數(shù)字,字母娃承,其他字符奏夫,首字母是否可以為數(shù)字 */
- (NSString *)cpx_stringByTrimmingBlank;/** 去掉兩端空格和換行符 */
- (NSString *)cpx_removeHtmlFormat;/** 去掉html格式 */
- (BOOL)cpx_isValidTaxNo;/** 工商稅號(hào) */
- (BOOL)cpx_isIncludingEmoji;/** 判斷是否包含emoji */
NSString+timer.h 用于時(shí)間與字符串之間的相互轉(zhuǎn)換之間的處理
typedef enum {
timeStampTypeYMDHMS = 0, //年月日時(shí)分秒
timeStampTypeYMD, //年月日
timeStampTypeHMS, //時(shí)分秒
timeStampTypeHM //時(shí)
} timeStampType;
+ (NSString *)cpx_timeWithTimeIntervalString:(NSString *)timeString;/** 時(shí)間戳轉(zhuǎn)時(shí)間 */
+ (NSString *)cpx_getTimeWithTimeIntervalStr:(NSString *)timeStampStr timeStampType:(timeStampType)timeStampType;/** 時(shí)間戳轉(zhuǎn)時(shí)間(自定義樣式) */
+ (NSString *)cpx_timeToTurnTheTimestamp;/** 當(dāng)前日期轉(zhuǎn)時(shí)間戳(日期NSDate 轉(zhuǎn) 時(shí)間戳NSString) */
+(NSString *)cpx_getCureentTime; /** 獲取當(dāng)前時(shí)間字符串 */
+ (NSTimeInterval)cpx_getCurrentTimeValue;/** 獲取當(dāng)前時(shí)間字符串 */
+(NSString *)cpx_getCureentTimeWithFormatter:(timeStampType)timeStampType; /** 獲取當(dāng)前時(shí)間字符串(需傳入時(shí)間樣式) */
+(NSString *)cpx_turnTheTimestampString:(NSString*) timeStr;/** 日期字符串轉(zhuǎn)時(shí)間戳(NSString轉(zhuǎn)時(shí)間戳NSString*/
+(NSMutableArray *)cpx_caculateDiffreceMonthFromDate:(NSString *)fromDate;/** 計(jì)算兩個(gè)日期的相差月數(shù),并返回中間間隔的月份 */
+(NSString *)cpx_getYestodayDate;/** 獲取昨天的日期 */
+(NSString *)cpx_timeStrChangeWithTime:(NSInteger)timeNum;/** //將時(shí)間(s)轉(zhuǎn)換成時(shí)間戳(MM:ss) */
NSArray+Basic.h 處理不安全數(shù)組
NSArray+log.h 用于控制臺(tái)打印中文(因?yàn)榫W(wǎng)絡(luò)請(qǐng)求的數(shù)據(jù)在控制臺(tái)顯示出來(lái)是UTF-8格式历筝,只需導(dǎo)入該頭文件即可打印中文信息)
NSObject+Basic.h 數(shù)據(jù)持久化(單列存儲(chǔ))
-(void)cpx_saveValue:(NSString*)key Value:(id)value;/** 存儲(chǔ)值 */
-(id)cpx_getValue:(NSString*)key;/** 取值 */
-(void)cpx_setBoolValue:(BOOL)value forKey:(NSString *)key;/** 存儲(chǔ)布爾值*/
Extensions
UIViewExt.h 用于調(diào)取UIView的坐標(biāo)
@property CGPoint origin; /** 位置 */
@property CGSize size; /** 大小 */
@property (readonly) CGPoint bottomLeft; /**坐下 */
@property (readonly) CGPoint bottomRight; /** 右下*/
@property (readonly) CGPoint topRight; /** 右上*/
@property CGFloat height; /** 高 */
@property CGFloat width; /** 寬 */
@property CGFloat top; /** 上 */
@property CGFloat left; /** 左 */
@property CGFloat bottom; /**下 */
@property CGFloat right; /** 右 */
@property (nonatomic, assign) CGFloat centerX;/**中心X */
@property (nonatomic, assign) CGFloat centerY;/** 中心Y */
- (void) moveBy: (CGPoint) delta;/** 移動(dòng)*/
- (void) scaleBy: (CGFloat) scaleFactor;/** 縮放 */
- (void) fitInSize: (CGSize) aSize;/** 適應(yīng) */
- (UIView *)gridViewsCustom:(NSArray *)views inColumn:(NSInteger)column size:(CGSize)cellSize margin:(UIEdgeInsets)margin inRect:(CGRect)rect;/** */
ColorEx.h用于擴(kuò)展顏色的功能
///******************顏色與16進(jìn)制RGB的轉(zhuǎn)化*******************//
- (NSString *) stringFromColor; /**將顏色轉(zhuǎn)化為rgb的字符串 */
+ (UIColor *) colorWithString: (NSString *) stringToConvert; /** 將rgb的字符串轉(zhuǎn)為顏色*/
- (NSString *) hexStringFromColor; /** 將16進(jìn)制顏色轉(zhuǎn)換為rgb字符串 */
+ (UIColor *) colorWithHexStringBeta: (NSString *) stringToConvert;/** 將16進(jìn)制字符串轉(zhuǎn)為顏色 */
+ (UInt32) RGBWithString: (NSString *) stringToRGB;/** 將rgb字符串轉(zhuǎn)為UInt 32 rgb */
+ (UIColor *) colorWithHexString: (NSString *) stringToConvert;/** 將16進(jìn)制字符串轉(zhuǎn)為color */
HJCornerRadius.h 用于高效設(shè)置imageView的圓角酗昼,避免maskTobounds
@property (nonatomic, assign) CGFloat aliCornerRadius;/** 圓角數(shù) */
NetworkManager(核心類)
在這個(gè)類中,我們對(duì)網(wǎng)絡(luò)請(qǐng)求進(jìn)行了很多封裝以應(yīng)對(duì)不同場(chǎng)景不同需求梳猪。(其中body數(shù)據(jù)傳輸麻削、網(wǎng)絡(luò)緩存、文件上傳下載、斷點(diǎn)傳輸碟婆,都進(jìn)行了封裝电抚,一句代碼輕松實(shí)現(xiàn)功能)
CPXNetCofig.h 網(wǎng)絡(luò)層宏文件(用于配置網(wǎng)絡(luò)請(qǐng)求的各種參數(shù)及宏)
CPXNetworkCache.h 網(wǎng)絡(luò)層數(shù)據(jù)緩存類(存儲(chǔ)方式:Cache)
這個(gè)類是主要是對(duì)YYCache的二次封裝,實(shí)現(xiàn)了異步緩存數(shù)據(jù)竖共,不僅用于網(wǎng)絡(luò)請(qǐng)求蝙叛,也可以用于其他數(shù)據(jù)的存儲(chǔ)。(注意:不能直接對(duì)Model數(shù)據(jù)進(jìn)行緩存公给,必須對(duì)model進(jìn)行轉(zhuǎn)化)
+ (void)setHttpCache:(id)httpData URL:(NSString *)URL parameters:(id)parameters; /**異步緩存網(wǎng)絡(luò)數(shù)據(jù),根據(jù)請(qǐng)求的 URL與parameters借帘,做KEY存儲(chǔ)數(shù)據(jù), 這樣就能緩存多級(jí)頁(yè)面的數(shù)據(jù) */
+ (void)setHttpCache:(id)httpData Key:(NSString *)Key; /**異步緩存數(shù)據(jù),不局限與網(wǎng)絡(luò)請(qǐng)求數(shù)據(jù) */
+ (id)httpCacheForURL:(NSString *)URL parameters:(id)parameters; /**根據(jù)請(qǐng)求的 URL與parameters 同步取出緩存數(shù)據(jù) */
+ (id)httpCacheForKey:(NSString *)Key;/**同步取出緩存數(shù)據(jù)淌铐,不局限與網(wǎng)絡(luò)請(qǐng)求數(shù)據(jù) */
+ (void)removeHttpDataForURL:(NSString *)URL parameters:(id)parameters;/** 刪除對(duì)應(yīng)的網(wǎng)絡(luò)請(qǐng)求緩存數(shù)據(jù)*/
+ (void)removeHttpDataForKey:(NSString *)key;/** 刪除對(duì)應(yīng)key的緩存數(shù)據(jù)*/
+ (NSInteger)getAllHttpCacheSize; /** 獲取緩存的大小bytes(字節(jié)) */
+ (void)removeAllHttpCache; /** 刪除所有緩存肺然,清空緩存 */
CPXNetworkManagerModel.h 此Model用于進(jìn)行網(wǎng)絡(luò)請(qǐng)求前的各種配置,以便應(yīng)對(duì)各種需求腿准,具體用法請(qǐng)看參數(shù)說(shuō)明
typedef NS_ENUM(NSInteger, CPXNetWorkReliability) {
//如果沒(méi)有發(fā)送成功际起,再次請(qǐng)求
CPXNetWorkReliabilityRetry = 0,
//必須要成功的請(qǐng)求,如果不成功就存入DB吐葱,然后再網(wǎng)絡(luò)好的情況下繼續(xù)發(fā)送街望,參照微信發(fā)消息
//需要注意,這類請(qǐng)求是不需要回調(diào)的
//類似于發(fā)微信成功與否
//必定成功弟跑,只要有網(wǎng)的情況下必定成功
CPXNetWorkReliabilityStoreToDB,
//普通請(qǐng)求灾前,成不成功不影響業(yè)務(wù),不需要重新發(fā)送
//類似統(tǒng)計(jì)孟辑、后臺(tái)拉取本地已有的配置之類的請(qǐng)求
CPXNetWorkReliabilityNormal
};
/**
網(wǎng)絡(luò)請(qǐng)求方式
- CPXRequestMethodGET: GET
- CPXRequestMethodPOST: POS
- CPXRequestMethodPUT: PUT
- CPXRequestMethodPATCH :PATCH
- CPXRequestMethodDELETE: DELETE
*/
typedef NS_ENUM(NSInteger, CPXRequestMethod) {
CPXRequestMethodGET = 0,
CPXRequestMethodPOST,
CPXRequestMethodPUT,
CPXRequestMethodPATCH,
CPXRequestMethodDELETE
}
//網(wǎng)絡(luò)請(qǐng)求Fail的展示
typedef NS_ENUM(NSInteger, RequestErrorShowStyle) {
ErrorShowNone = 0, //無(wú)
ErrorShowWithHub, //展示hub
ErrorShowWithEmptyConfig, //展示占位圖
}; //網(wǎng)絡(luò)請(qǐng)求失敗展示效果
/// 網(wǎng)絡(luò)狀態(tài)的Block
typedef void(^CPXNetworkMethodType)(CPXRequestMethod status);
@property (nonatomic, copy) NSString *urlStr; /** 請(qǐng)求的url(必傳) */
@property (nonatomic, copy) NSDictionary *params; /** 請(qǐng)求參數(shù)(可不傳) */
@property(nonatomic,strong)NSDictionary *bodyDic; /** 用于body網(wǎng)絡(luò)請(qǐng)求傳參數(shù) */
@property (nonatomic, assign) BOOL isCache; /** 緩存開(kāi)關(guān) YES:打開(kāi)開(kāi)關(guān) NO:關(guān)閉開(kāi)關(guān)(默認(rèn)關(guān)閉) */
@property (nonatomic, assign) int expirationTime; /** 緩存過(guò)期時(shí)間 有網(wǎng)默認(rèn)600秒 無(wú)網(wǎng)30天 */
@property (nonatomic, assign) CPXNetWorkReliability reliability; /** 請(qǐng)求重復(fù)策略哎甲,默認(rèn)重發(fā)(暫時(shí)沒(méi)用) */
@property (nonatomic, assign) int retryCount; /**網(wǎng)絡(luò)請(qǐng)求超時(shí)時(shí)間 */
@property (nonatomic,assign) CGFloat retryDelay; /** 每次retry之間的間隔時(shí)間(默認(rèn)0.1秒) */
@property (nonatomic, assign) CPXRequestMethod requestMethod; /** 請(qǐng)求方式(默認(rèn)get) */
@property (nonatomic,assign) BOOL isShowHub; /** 是否展示菊花(默認(rèn)為NO) */
@property (nonatomic,strong) UIView *showView; /** 菊花展示的view(配合IsShowHub使用,默認(rèn)為window) */
@property (nonatomic,strong) UIScrollView *ScrollView; /** 傳入一個(gè)繼承于scrollView(tableview和collectionView都可以)饲嗽,用來(lái)關(guān)閉上拉下拉刷新 */
@property (nonatomic,assign) BOOL isFreshing;/** 判斷是否為手動(dòng)刷新數(shù)據(jù)(如果是手動(dòng)刷新數(shù)據(jù)就不用判斷時(shí)間是否過(guò)期 : YES代表手動(dòng)刷新數(shù)據(jù)) */
@property(nonatomic,assign)BOOL showNetworkActivityIndicator; /** 是否展示狀態(tài)欄小菊花(默認(rèn)打開(kāi)) */
@property(nonatomic,assign)RequestErrorShowStyle errorStyle; /** 網(wǎng)絡(luò)請(qǐng)求錯(cuò)誤的展示方式 */
@property(nonatomic,assign)BOOL showCodeMsg; /** 是否展示錯(cuò)誤信息信息 */
@property(nonatomic,assign)BOOL isCancelRequest; /** 是否取消當(dāng)前網(wǎng)絡(luò)請(qǐng)求 */
CPXBaseNetworkManager.h Base網(wǎng)絡(luò)請(qǐng)求Manger(主要處理一些試圖交互邏輯的處理),繼承于CPXNetworkManager
/**
不帶緩存的網(wǎng)絡(luò)請(qǐng)求
@param model 網(wǎng)絡(luò)請(qǐng)求配置model
@param success 成功的回調(diào)
@param failure 失敗的回調(diào)
*/
+ (void)CPXBaseRequestWithNetworkModel:(CPXNetworkManagerModel *)model
success:(CPXHttpRequestSuccess)success
failure:(CPXHttpRequestFailed)failure;
/**
帶緩存的網(wǎng)絡(luò)請(qǐng)求
@param model 網(wǎng)絡(luò)請(qǐng)求配置model
@param responseCache 緩存的回調(diào)
@param success 成功的回調(diào)
@param failure 失敗的回調(diào)
*/
+ (void)CPXBaseRequestWithNetworkModel:(CPXNetworkManagerModel *)model
responseCache:(CPXHttpRequestCache)responseCache
success:(CPXHttpRequestSuccess)success
failure:(CPXHttpRequestFailed)failure;
CPXNetworkManager.h 網(wǎng)絡(luò)請(qǐng)求炭玫,主要處理緩存以及過(guò)期問(wèn)題。對(duì)各種請(qǐng)求方法的整合,繼承于CPXNetworkHelper
CPXNetworkHelper.h 用于封裝AFN
/**
有網(wǎng)YES, 無(wú)網(wǎng):NO
@return BOOL
*/
+ (BOOL)isNetwork;
/**
手機(jī)網(wǎng)絡(luò):YES, 反之:NO
@return BOOL
*/
+ (BOOL)isWWANNetwork;
/**
WiFi網(wǎng)絡(luò):YES, 反之:NO
@return BOOL
*/
+ (BOOL)isWiFiNetwork;
/**
取消所有HTTP請(qǐng)求
*/
+ (void)cancelAllRequest;
/**
實(shí)時(shí)獲取網(wǎng)絡(luò)狀態(tài),通過(guò)Block回調(diào)實(shí)時(shí)獲取(此方法可多次調(diào)用)
@param networkStatus 網(wǎng)絡(luò)類型枚舉值
*/
+ (void)networkStatusWithBlock:(CPXNetworkStatus)networkStatus;
/**
取消指定URL的HTTP請(qǐng)求
@param URL 指定的URL
*/
+ (void)cancelRequestWithURL:(NSString *)URL;
/**
開(kāi)啟日志打印 (Debug級(jí)別)
*/
+ (void)openLog;
/**
關(guān)閉日志打印,默認(rèn)打開(kāi)
*/
+ (void)closeLog;
/**
* GET請(qǐng)求,無(wú)緩存
*
* @param URL 請(qǐng)求地址
* @param parameters 請(qǐng)求參數(shù)
* @param success 請(qǐng)求成功的回調(diào)
* @param failure 請(qǐng)求失敗的回調(diào)
*
* @return 返回的對(duì)象可取消請(qǐng)求,調(diào)用cancel方法
*/
+ (__kindof NSURLSessionTask *)GET:(NSString *)URL
parameters:(id)parameters
success:(CPXHttpRequestSuccess)success
failure:(CPXHttpRequestFailed)failure;
/**
* GET請(qǐng)求,自動(dòng)緩存
*
* @param URL 請(qǐng)求地址
* @param parameters 請(qǐng)求參數(shù)
* @param responseCache 緩存數(shù)據(jù)的回調(diào)
* @param success 請(qǐng)求成功的回調(diào)
* @param failure 請(qǐng)求失敗的回調(diào)
*
* @return 返回的對(duì)象可取消請(qǐng)求,調(diào)用cancel方法
*/
+ (__kindof NSURLSessionTask *)GET:(NSString *)URL
parameters:(id)parameters
responseCache:(CPXHttpRequestCache)responseCache
success:(CPXHttpRequestSuccess)success
failure:(CPXHttpRequestFailed)failure;
/**
* PUT請(qǐng)求,自動(dòng)緩存
*
* @param URL 請(qǐng)求地址
* @param parameters 請(qǐng)求參數(shù)
* @param responseCache 緩存數(shù)據(jù)的回調(diào)
* @param success 請(qǐng)求成功的回調(diào)
* @param failure 請(qǐng)求失敗的回調(diào)
*
* @return 返回的對(duì)象可取消請(qǐng)求,調(diào)用cancel方法
*/
+ (__kindof NSURLSessionTask *)PUT:(NSString *)URL
parameters:(id)parameters
responseCache:(CPXHttpRequestCache)responseCache
success:(CPXHttpRequestSuccess)success
failure:(CPXHttpRequestFailed)failure;
/**
* PATCH請(qǐng)求,自動(dòng)緩存
*
* @param URL 請(qǐng)求地址
* @param parameters 請(qǐng)求參數(shù)
* @param responseCache 緩存數(shù)據(jù)的回調(diào)
* @param success 請(qǐng)求成功的回調(diào)
* @param failure 請(qǐng)求失敗的回調(diào)
*
* @return 返回的對(duì)象可取消請(qǐng)求,調(diào)用cancel方法
*/
+ (__kindof NSURLSessionTask *)PATCH:(NSString *)URL
parameters:(id)parameters
responseCache:(CPXHttpRequestCache)responseCache
success:(CPXHttpRequestSuccess)success
failure:(CPXHttpRequestFailed)failure;
/**
* POST請(qǐng)求,自動(dòng)緩存
*
* @param URL 請(qǐng)求地址
* @param parameters 請(qǐng)求參數(shù)
* @param responseCache 緩存數(shù)據(jù)的回調(diào)
* @param success 請(qǐng)求成功的回調(diào)
* @param failure 請(qǐng)求失敗的回調(diào)
*
* @return 返回的對(duì)象可取消請(qǐng)求,調(diào)用cancel方法
*/
+ (__kindof NSURLSessionTask *)POST:(NSString *)URL
parameters:(id)parameters
responseCache:(CPXHttpRequestCache)responseCache
success:(CPXHttpRequestSuccess)success
failure:(CPXHttpRequestFailed)failure;
/*** DELETE請(qǐng)求,自動(dòng)緩存
@param URL 請(qǐng)求地址
@param parameters 請(qǐng)求參數(shù)
@param responseCache 緩存的回調(diào)
@param success 請(qǐng)求成功的回調(diào)
@param failure 請(qǐng)求失敗的回調(diào)
@return 返回的對(duì)象可取消請(qǐng)求,調(diào)用cancel方法
*/
+ (__kindof NSURLSessionTask *)DELETE:(NSString *)URL
parameters:(id)parameters
responseCache:(CPXHttpRequestCache)responseCache
success:(CPXHttpRequestSuccess)success
failure:(CPXHttpRequestFailed)failure;
/** 上傳文件
*
* @param URL 請(qǐng)求地址
* @param parameters 請(qǐng)求參數(shù)
* @param name 文件對(duì)應(yīng)服務(wù)器上的
* @param filePath 文件本地的沙盒路徑
* @param progress 上傳進(jìn)度信息
* @param success 請(qǐng)求成功的回調(diào)
* @param failure 請(qǐng)求失敗的回調(diào)
*
* @return 返回的對(duì)象可取消請(qǐng)求,調(diào)用cancel方法
*/
+ (__kindof NSURLSessionTask *)uploadFileWithURL:(NSString *)URL
parameters:(id)parameters
name:(NSString *)name
filePath:(NSString *)filePath
progress:(CPXHttpProgress)progress
success:(CPXHttpRequestSuccess)success
failure:(CPXHttpRequestFailed)failure;
/**
* 上傳單/多張圖片
*
* @param URL 請(qǐng)求地址
* @param parameters 請(qǐng)求參數(shù)
* @param name 圖片對(duì)應(yīng)服務(wù)器上的字段
* @param images 圖片數(shù)組
* @param fileNames 圖片文件名數(shù)組, 可以為nil, 數(shù)組內(nèi)的文件名默認(rèn)為當(dāng)前日期時(shí)間"yyyyMMddHHmmss"
* @param imageScale 圖片文件壓縮比 范圍 (0.f ~ 1.f)
* @param imageType 圖片文件的類型,例:png喝噪、jpg(默認(rèn)類型)....
* @param progress 上傳進(jìn)度信息
* @param success 請(qǐng)求成功的回調(diào)
* @param failure 請(qǐng)求失敗的回調(diào)
*
* @return 返回的對(duì)象可取消請(qǐng)求,調(diào)用cancel方法
*/
+ (__kindof NSURLSessionTask *)uploadImagesWithURL:(NSString *)URL
parameters:(id)parameters
name:(NSString *)name
images:(NSArray<UIImage *> *)images
fileNames:(NSArray<NSString *> *)fileNames
imageScale:(CGFloat)imageScale
imageType:(NSString *)imageType
progress:(CPXHttpProgress)progress
success:(CPXHttpRequestSuccess)success
failure:(CPXHttpRequestFailed)failure;
/**
* 下載文件(不支持?jǐn)帱c(diǎn)下載)
*
* @param URL 請(qǐng)求地址
* @param fileDir 文件存儲(chǔ)目錄(默認(rèn)存儲(chǔ)目錄為Download)
* @param progress 文件下載的進(jìn)度信息
* @param success 下載成功的回調(diào)(回調(diào)參數(shù)filePath:文件的路徑)
* @param failure 下載失敗的回調(diào)
*
* @return 返回NSURLSessionDownloadTask實(shí)例础嫡,可用于暫停繼續(xù),暫停調(diào)用suspend方法酝惧,開(kāi)始下載調(diào)用resume方法
*/
+ (__kindof NSURLSessionTask *)downloadWithURL:(NSString *)URL
fileDir:(NSString *)fileDir
progress:(CPXHttpProgress)progress
success:(void(^)(NSString *filePath))success
failure:(CPXHttpRequestFailed)failure;
/**
Description * 下載文件(支持?jǐn)帱c(diǎn)下載)
@param urlHost 請(qǐng)求地址
@param progress 文件下載的進(jìn)度信息
@param fileDir 文件存儲(chǔ)目錄(默認(rèn)存儲(chǔ)目錄為Download)
@param success 下載成功的回調(diào)(回調(diào)參數(shù)filePath:文件的路徑)
@param failure 下載失敗的回調(diào)
@return 返回NSURLSessionDownloadTask實(shí)例榴鼎,可用于暫停繼續(xù),暫停調(diào)用suspend方法晚唇,開(kāi)始下載調(diào)用resume方法
*/
+ (__kindof NSURLSessionTask *)AFDownLoadFileWithUrl:(NSString*)urlHost
progress:(DowningProgress)progress
fileDir:(NSString *)fileDir
success:(DonwLoadSuccessBlock)success
failure:(DownLoadfailBlock)failure;
/**
用body傳參數(shù)的網(wǎng)絡(luò)請(qǐng)求
@param URL url
@param parameters 參數(shù)
@param body body(字典格式巫财,方法里面自動(dòng)轉(zhuǎn)換)
@param requetMetod 請(qǐng)求方式(POST,GET)
@param responseCache 緩存
@param success 成功的回調(diào)
@param failure 失敗的回調(diào)
*/
+(void )HTTPBody:(NSString *)URL
prams:(id)parameters
body:(id)body
requestMethod:(NSString*)requetMetod
responseCache:(CPXHttpRequestCache)responseCache
success:(CPXHttpRequestSuccess)success
failure:(CPXHttpRequestFailed)failure;
/**
在開(kāi)發(fā)中,如果以下的設(shè)置方式不滿足項(xiàng)目的需求,就調(diào)用此方法獲取AFHTTPSessionManager實(shí)例進(jìn)行自定義設(shè)置
(注意: 調(diào)用此方法時(shí)在要導(dǎo)入AFNetworking.h頭文件,否則可能會(huì)報(bào)找不到AFHTTPSessionManager的?)
@param sessionManager AFHTTPSessionManager的實(shí)例
*/
+ (void)setAFHTTPSessionManagerProperty:(void(^)(AFHTTPSessionManager *sessionManager))sessionManager;
/**
* 設(shè)置網(wǎng)絡(luò)請(qǐng)求參數(shù)的格式:默認(rèn)為二進(jìn)制格式
*
* @param requestSerializer PPRequestSerializerJSON(JSON格式),PPRequestSerializerHTTP(二進(jìn)制格式),
*/
+ (void)setRequestSerializer:(CPXRequestSerializer)requestSerializer;
/**
* 設(shè)置服務(wù)器響應(yīng)數(shù)據(jù)格式:默認(rèn)為JSON格式
*
* @param responseSerializer PPResponseSerializerJSON(JSON格式),PPResponseSerializerHTTP(二進(jìn)制格式)
*/
+ (void)setResponseSerializer:(CPXResponseSerializer)responseSerializer;
/**
* 設(shè)置請(qǐng)求超時(shí)時(shí)間
*
* @param time 時(shí)長(zhǎng)
*/
+ (void)setRequestTimeoutInterval:(NSTimeInterval)time;
/// 設(shè)置請(qǐng)求頭
+ (void)setValue:(NSString *)value forHTTPHeaderField:(NSString *)field;
/**
* 是否打開(kāi)網(wǎng)絡(luò)狀態(tài)轉(zhuǎn)圈菊花:默認(rèn)打開(kāi)
*
* @param open YES(打開(kāi)), NO(關(guān)閉)
*/
+ (void)openNetworkActivityIndicator:(BOOL)open;
/**
配置自建證書(shū)的Https請(qǐng)求, 參考鏈接: http://blog.csdn.net/syg90178aw/article/details/52839103
@param cerPath 自建Https證書(shū)的路徑
@param validatesDomainName 是否需要驗(yàn)證域名哩陕,默認(rèn)為 YES. 如果證書(shū)的域名與請(qǐng)求的域名不一致平项,需設(shè)置為NO; 即服 務(wù)器使用其他可信任機(jī)構(gòu)頒發(fā)
的證書(shū)赫舒,也可以建立連接,這個(gè)非常危險(xiǎn), 建議打開(kāi).validatesDomainName=NO, 主要用于這種情況:客戶端請(qǐng)求的是子域名, 而證書(shū)上的是另外
一個(gè)域名闽瓢。因?yàn)镾SL證書(shū)上的域名是獨(dú)立的,假如證書(shū)上注冊(cè)的域名是www.google.com, 那么mail.google.com是無(wú)法驗(yàn)證通過(guò)的.
*/
+ (void)setSecurityPolicyWithCerPath:(NSString *)cerPath validatesDomainName:(BOOL)validatesDomainName;
CPXServerDownLoadTool 此類用于斷點(diǎn)下載(當(dāng)程序意外退出或后臺(tái)退出會(huì)保存下載記錄)
/**
文件下載
@param urlHost 下載地址
@param progress 下載進(jìn)度
@param localUrl 本地存儲(chǔ)路徑
@param success 下載成功
@param failure 下載失敗
@return downLoadTask
*/
- (NSURLSessionDownloadTask *)AFDownLoadFileWithUrl:(NSString*)urlHost
progress:(DowningProgress)progress
fileLocalUrl:(NSURL *)localUrl
success:(DonwLoadSuccessBlock)success
failure:(DownLoadfailBlock)failure;
/**
刪除對(duì)應(yīng)key所對(duì)應(yīng)的下載數(shù)據(jù)(用于數(shù)據(jù)未下載完刪除當(dāng)前進(jìn)度接癌,使用方法需先取消當(dāng)前任務(wù))
@param key key
*/
- (void)deleteDownLoadHistory:(NSString*)key;
/** 停止所有的下載任務(wù)*/
- (void)stopAllDownLoadTasks;
/** */
ThirdPart
DYModelMaker 字典自動(dòng)生成模型類:支持多層模型嵌套、自動(dòng)生成兩種框架(MJExtension和YYModel)的系統(tǒng)關(guān)鍵字替換和數(shù)組中字典轉(zhuǎn)模型代碼
Utls
CPXAlertUtils.h MBProgressHUD的封
/**
備注:
1. 調(diào)用 ok,error,warning 方法時(shí),進(jìn)行信息提示,有對(duì)應(yīng)圖片,當(dāng)時(shí)間到后,會(huì)自動(dòng)消失,并且不管是否有傳 toView 參數(shù),在顯示的同時(shí)還是可以進(jìn)行交互的.即可以重復(fù)點(diǎn)擊
2. 調(diào)用 message 方法,只進(jìn)行信息展示,沒(méi)有對(duì)應(yīng)圖片.當(dāng)時(shí)間到后,會(huì)自動(dòng)消失,并且不管是否有傳 toView 參數(shù),在顯示的同時(shí)還是可以進(jìn)行交互的.即可以重復(fù)點(diǎn)擊
3. 調(diào)用 info 方法,顯示一個(gè) loading 視圖,不會(huì)自動(dòng)消失,需要外界調(diào)用對(duì)應(yīng)方法讓其消失,并且在展示的時(shí)候禁止用戶進(jìn)行其他交互.所以這里添加的圖層需要注意,根據(jù)需求添加圖層
*/
// 成功提示 - 會(huì)自動(dòng)消失
+ (void)success:(NSString *)msg;
+ (void)success:(NSString *)msg duration:(int)duration;
+ (void)success:(NSString *)msg duration:(int)duration toView:(UIView *)toView;
// 錯(cuò)誤提示 - 會(huì)自動(dòng)消失
+ (void)error:(NSString *)msg;
+ (void)error:(NSString *)msg duration:(int)duration;
+ (void)error:(NSString *)msg duration:(int)duration toView:(UIView *)toView;
// 警告提示 - 會(huì)自動(dòng)消失
+ (void)warning:(NSString *)msg;
+ (void)warning:(NSString *)msg duration:(int)duration;
+ (void)warning:(NSString *)msg duration:(int)duration toView:(UIView *)toView;
// 信息提示,沒(méi)有圖片
+ (void)message:(NSString *)msg;
+ (void)message:(NSString *)msg duration:(int)duration;
+ (void)message:(NSString *)msg duration:(int)duration toView:(UIView *)toView;
// 轉(zhuǎn)菊花的提示 - 不會(huì)自動(dòng)消失
+ (MBProgressHUD *)loading;
+ (MBProgressHUD *)loading:(NSString *)msg;
+ (MBProgressHUD *)loading:(NSString *)msg toView:(UIView *)toView;
+ (MBProgressHUD *)showTopWinMessage:(NSString *)msg duration:(int)duration;
//停止菊花提示
+ (void)stopLoading:(MBProgressHUD *)hud;
+ (void)stopLoading:(MBProgressHUD *)hud message:(NSString *)msg;
+ (void)stopLoading:(MBProgressHUD *)hud message:(NSString *)msg delay:(CGFloat)seconds completion:(void (^)(void))completion;
/**
系統(tǒng)提示框(默認(rèn)帶一個(gè)確認(rèn)按鈕)
*/
+ (void)alertTitle:(NSString *)title
andMsg:(NSString *)msg;
/**
系統(tǒng)提示框(默認(rèn)帶一個(gè)確認(rèn)按鈕以及action)
@param title 標(biāo)題
@param msg 提示信息
@param action 按鈕的響應(yīng)事件
*/
+ (void)alertTitle:(NSString *)title
andMsg:(NSString *)msg
action:(CommonVoidBlocks)action;
/**
系統(tǒng)提示框(可選擇按鈕個(gè)數(shù)(最多兩個(gè)))
@param title 標(biāo)題
@param msg 提示信息
@param Name 按鈕名稱數(shù)組
@param tapaAction 第一個(gè)按鈕響應(yīng)事件
@param cacleAction 第二個(gè)按鈕響應(yīng)事件
*/
+(void)alertTitle:(NSString *)title
andMsg:(NSString *)msg
buttonName:(NSArray*)Name
fistAction:(void(^)(void))tapaAction
secondAction:(void(^)(void))cacleAction;
CommonUtls.h 公用的一些工具:獲取當(dāng)前控制器扣讼、快速創(chuàng)建model屬性(快速創(chuàng)建網(wǎng)絡(luò)請(qǐng)求返回的字典的屬性)缺猛、調(diào)起相冊(cè)或相機(jī)進(jìn)行圖片選擇等
typedef NS_ENUM(NSUInteger, PhotoImagePickerStyle) {
/// 展示底部選擇試圖(選擇是照相還是選擇相冊(cè))
ShowChooseViewStyle,
///直接照相
TakePhotoStyle,
/// 直接進(jìn)入相冊(cè)
ChooseFromAblumStyle,
};
/**
調(diào)起相冊(cè)或相機(jī)進(jìn)行圖片選擇
參考鏈接:https://github.com/longitachi/ZLPhotoBrowser
@param number 圖片選擇的張數(shù)
@param selectImageBlock 圖片選擇成功的回調(diào)
*/
+(ZLPhotoActionSheet*)presentImagePickControllerWithImageNumber:(NSInteger)number type:(PhotoImagePickerStyle)style complet:(void (^)(NSArray<UIImage *> *__nullable imagesArray))selectImageBlock;
/**
圖片瀏覽器(可選擇樣式)
參考鏈接:https://github.com/CoderXLLau/XLPhotoBrowser
@param imageArray 圖片數(shù)組(數(shù)組里面可以是url字符串,NSurl對(duì)象椭符,image對(duì)象荔燎、)
@param index 當(dāng)前頁(yè)數(shù)
*/
+(void)showPhotoBrowserWithImages:(NSArray *)imageArray
currentImageIndex:(NSInteger)index;
/**
獲取的當(dāng)前顯示的控制器
*/
+ (UIViewController *)cpx_getCurrentDisplayController;
+ (UIViewController *)cpx_getParentControllerFromView:(UIView *)view;
/**
獲取當(dāng)前TabBarController
*/
+(UITabBarController *)currentTtabarController;
/**
獲取當(dāng)前TabBarController持有的NavigationController
*/
+(UINavigationController *)currentTabbarSelectedNavigationController;
/**
獲取當(dāng)前導(dǎo)航欄持有的控制器
*/
+(UIViewController*)getCurrentViewController;
/**
快速創(chuàng)建model屬性(快速創(chuàng)建網(wǎng)絡(luò)請(qǐng)求返回的字典的屬性)
@param dict 網(wǎng)絡(luò)請(qǐng)求返回的字典
*/
+(void)createModelWithDictionary:(NSDictionary *)dict;
/**
獲取當(dāng)前app版本號(hào)
*/
+(NSString *)getcCurrentAppVersion;
/**
獲取UUID
*/
+ (NSString *)getUUID;
/**
當(dāng)前國(guó)家代碼
*/
+(NSString *)currentCountryCode;
/**
設(shè)置狀態(tài)欄顏色
*/
+ (void)setStatusBarBackgroundColor:(UIColor *)color;