? ? ?創(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)如下圖:
就可以在最上面修改你想要的約束了。
好了,先分享這么多吧,下回分享一些常用的類別。