ios端自己封裝的基礎(chǔ)庫(kù)

  • 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;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市销钝,隨后出現(xiàn)的幾起案子有咨,更是在濱河造成了極大的恐慌,老刑警劉巖蒸健,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件座享,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡似忧,警方通過(guò)查閱死者的電腦和手機(jī)征讲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)橡娄,“玉大人,你說(shuō)我怎么就攤上這事癣籽⊥彀Γ” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵筷狼,是天一觀的道長(zhǎng)瓶籽。 經(jīng)常有香客問(wèn)我,道長(zhǎng)埂材,這世上最難降的妖魔是什么塑顺? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮俏险,結(jié)果婚禮上严拒,老公的妹妹穿的比我還像新娘。我一直安慰自己竖独,他們只是感情好裤唠,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著莹痢,像睡著了一般种蘸。 火紅的嫁衣襯著肌膚如雪墓赴。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,816評(píng)論 1 290
  • 那天航瞭,我揣著相機(jī)與錄音诫硕,去河邊找鬼。 笑死刊侯,一個(gè)胖子當(dāng)著我的面吹牛章办,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播滔吠,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼纲菌,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了疮绷?” 一聲冷哼從身側(cè)響起翰舌,我...
    開(kāi)封第一講書(shū)人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎冬骚,沒(méi)想到半個(gè)月后椅贱,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡只冻,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年庇麦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片喜德。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡山橄,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出舍悯,到底是詐尸還是另有隱情航棱,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布萌衬,位于F島的核電站饮醇,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏秕豫。R本人自食惡果不足惜朴艰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望混移。 院中可真熱鬧祠墅,春花似錦、人聲如沸沫屡。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)沮脖。三九已至金矛,卻和暖如春芯急,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背驶俊。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工娶耍, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人饼酿。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓榕酒,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親故俐。 傳聞我的和親對(duì)象是個(gè)殘疾皇子想鹰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348