iOS初建工程封裝工具類

? ? ?創(chuàng)建工程時候,肯定會引入一些三方庫,但是三方庫會是不是的更新,如果多處用到的話修改起來就很麻煩,這時候就要分裝一下工具類。下面寫一些我們工程中封裝的工具類:

1.網(wǎng)絡(luò)請求工具類:

直接上代碼:

.h文件:

#import <Foundation/Foundation.h>

typedef void ?(^AFFinishedBlock) ?(NSDictionary*resultDic);

typedef void ?(^AFFailedBlock) ?(void);

@interface ?ALDAFNetManager : NSObject

+ ?(void)requestWithUrlString:(NSString*)urlString ?parm:(NSDictionary*)dic ?finished:(AFFinishedBlock)finshedBlock ?failed:(AFFailedBlock) ?failedBlock;

@end

.m文件

+ ?(void)requestWithUrlString:(NSString*)urlString ?parm:(NSDictionary*)dic ?finished:(AFFinishedBlock)finshedBlock ?failed:(AFFailedBlock) failedBlock {

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

manager.responseSerializer= [AFHTTPResponseSerializer serializer];

manager.requestSerializer= [AFHTTPRequestSerializer serializer];

manager.requestSerializer.timeoutInterval=30.f;

[manager ?GET:urlString ?parameters:dic ?progress:nil ?success:^(NSURLSessionDataTask *_Nonnulltask,id _NullableresponseObject) {

NSString *str = [task.currentRequest.URL absoluteString];

NSLog(@"------請求URL:%@------",str);

NSDictionary *dic = [NSJSONSerialization ?JSONObjectWithData:response Objectoptions:NSJSONReadingMutableContainers ?error:nil];

//NSString ?*str1=[[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding];

if(finshedBlock) {

finshedBlock(dic);

}

}failure:^(NSURLSessionDataTask *_Nullabletask,NSError *_Nonnullerror) {

NSString *str = [task.currentRequest.URL absoluteString];

NSLog(@"------請求URL:%@------",str);

if(failedBlock) {

failedBlock();

}

}];

}

這個地方可以根據(jù)是否傳參數(shù)來判斷是用GET還是POST,但是因為POST不能打印完整鏈接,所以我在這個地方只封裝了GET的請求方式。

2.MBProgressHUD的工具類(MBProgressHUD的類別)

這個我就簡單的封裝了一個方法,后續(xù)如果需要的話可以繼續(xù)添加。這個方法是為了實現(xiàn)類似于安卓吐司的效果。

+ (void)show:(NSString*)text view:(UIView*)view

{

if(view ==nil)

view = [UIApplication sharedApplication].keyWindow;

//快速顯示一個提示信息

MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:view animated:YES];

hud.label.text= text;

//再設(shè)置模式

hud.mode=MBProgressHUDModeText;

hud.offset=CGPointMake(0,SCREEN_HEIGHT/2-150);

//隱藏時候從父控件中移除

hud.removeFromSuperViewOnHide=YES;

// 1秒之后再消失

[hud ?hideAnimated:YES ?afterDelay:1.5];

}

3.MJRefresh的工具類(UIScrollView的類別)

這里封裝了一些上拉加載,下拉刷新,停止刷新,沒有更多數(shù)據(jù)的方法

.h文件:

//添加下拉加載

- (void)addHeaderWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock;

//開始下拉加載

- (void)headerBeginRefreshing;

//停止下拉加載

- (void)headerEndRefreshing;

//添加上拉加載

- (void)addFooterWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock;

//開始上拉加載

- (void)footerBeginRefreshing;

//停止上拉加載

- (void)footerEndRefreshing;

//下拉加載隱藏

- (void)headerHidden:(BOOL)hidden;

//上拉刷新隱藏

- (void)footerHidden:(BOOL)hidden;

//沒有更多加載

- (void)noticeNoMoreData;

.m文件:

//添加下拉加載

- (void)addHeaderWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock

{

self.mj_header= [MJRefreshNormalHeader headerWithRefreshingBlock:refreshingBlock];

}

//開始下拉加載

- (void)headerBeginRefreshing

{

[self.mj_header ?beginRefreshing];

}

//停止下拉加載

- (void)headerEndRefreshing

{

[self.mj_header ?endRefreshing];

}

//添加上拉加載

- (void)addFooterWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock

{

self.mj_footer= [MJRefreshAutoNormalFooter ?footerWithRefreshingBlock:refreshingBlock];

}

//開始上拉加載

- (void)footerBeginRefreshing

{

[self.mj_footer ?beginRefreshing];

}

//停止上拉加載

- (void)footerEndRefreshing

{

[self.mj_footer ?endRefreshing];

}

//下拉加載隱藏

- (void)headerHidden:(BOOL)hidden

{

self.mj_header.hidden= hidden;

}

//上拉刷新隱藏

- (void)footerHidden:(BOOL)hidden

{

self.mj_footer.hidden= hidden;

}

//沒有更多加載

- (void)noticeNoMoreData

{

[self.mj_footer ?endRefreshingWithNoMoreData];

}

? ? ? 以上是一些三方類的封裝,這樣當(dāng)三方修改的時候,就可以只修改這些工具類就可以了,很方面。

4.NSLayoutConstraint在storyBoard里面使用float類型的約束

.h文件

#import <Foundation/Foundations.h>

IB_DESIGNABLE

@interface ALDIBConstant : NSLayoutConstraint

@property (nonatomic) IBInspectable CGFloat ?onePixelConstant ;

@end

.m文件

#import "ALDIBConstant.h"

@implementation ?ALDIBConstant

- (void)setOnePixelConstant:(CGFloat)onePixelConstant

{

_onePixelConstant= onePixelConstant;

self.constant= onePixelConstant;

}

@end

這個繼承類的用法主要用于在storyboard中添加float類型的約束

比如經(jīng)常需要一個0.5高的細(xì)線,在stoaryboard中拖一個View,添加height為1的約束,然后點擊右側(cè)的第三個按鈕,將Class設(shè)為ALDIBConstant,然后點擊第四個按鈕,就會出現(xiàn)如下圖:


修改約束大小

就可以在最上面修改你想要的約束了。

好了,先分享這么多吧,下回分享一些常用的類別。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容