你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS開發 常用宏定義

iOS開發 常用宏定義

編輯:IOS開發綜合

#ifndef Public_h

#define Public_h

// 1.判別能否為IOS7

#define IOS7 ([[UIDevice currentDevice].systemVersion doubleValue] >= 7.0)

#define IOS_VERSION [[[UIDevice currentDevice] systemVersion] floatValue]

// 2.取得RGB顏色

#define RGBA(r, g, b, a) [UIColor colorWithRed:r/255.0f green:g/255.0f blue:b/255.0f alpha:a]

#define RGB(r, g, b) RGBA(r, g, b, 1.0f)

// 隨機色

#define RandomColor RGB(arc4random_uniform(256), arc4random_uniform(256), arc4random_uniform(256))

// 3.能否為4inch

#define fourInch ([UIScreen mainScreen].bounds.size.height == 568)

// 4.屏幕大小尺寸

#define screen_width [UIScreen mainScreen].bounds.size.width

#define screen_height [UIScreen mainScreen].bounds.size.height

//重新設定view的Y值

#define setFrameY(view, newY) view.frame = CGRectMake(view.frame.origin.x, newY, view.frame.size.width, view.frame.size.height)

#define setFrameX(view, newX) view.frame = CGRectMake(newX, view.frame.origin.y, view.frame.size.width, view.frame.size.height)

#define setFrameH(view, newH) view.frame = CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, newH)

#define setFrameW(view, newW) view.frame = CGRectMake(view.frame.origin.x, view.frame.origin.y, newW, view.frame.size.height)

//取view的坐標及長寬

#define W(view) view.frame.size.width

#define H(view) view.frame.size.height

#define X(view) view.frame.origin.x

#define Y(view) view.frame.origin.y

#define ViewBottomY(view) Y(view)+H(view)

#define ViewWidthX(view) X(view)+W(view)

//5.常用對象

#define APPDELEGATE ((AppDelegate *)[UIApplication sharedApplication].delegate)

#define APP_TOPWIMDOW [[UIApplication sharedApplication].Windows lastObject]

//重寫NSLog,Debug形式下打印日志和以後行數

#if DEBUG

#define NSLog(FORMAT, ...) fprintf(stderr,"line%d content:%s\n",__LINE__,[[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);

//fprintf(stderr,"\nfunction:%s line:%d content:%s", __FUNCTION__, __LINE__, [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);

#else

#define NSLog(FORMAT, ...) nil

#endif

//----------------------其他----------------------------

// View 圓角和加邊框

#define ViewBorderRadius(View, Radius, Width, Color)\

\

[View.layer setCornerRadius:(Radius)];\

[View.layer setMasksToBounds:YES];\

[View.layer setBorderWidth:(Width)];\

[View.layer setBorderColor:[Color CGColor]]

// View 圓角

#define ViewRadius(View, Radius)\

\

[View.layer setCornerRadius:(Radius)];\

[View.layer setMasksToBounds:YES]

// 能否iPad
#define isPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
// 能否iPad
#define someThing (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)? ipad: iphone
 
//獲取零碎版本
#define IOS_VERSION [[UIDevice currentDevice] systemVersion] floatValue]
#define CurrentSystemVersion [UIDevice currentDevice] systemVersion]
//方正黑體簡體字體定義
#define FONT(F) [UIFont fontWithName:@"FZHTJW--GB1-0" size:F]




#endif /* Public_h */


以及單例形式

// .h文件的完成
#define SingletonH(methodName) + (instancetype)shared##methodName;

// .m文件的完成
#if __has_feature(objc_arc) // 是ARC
#define SingletonM(methodName) \
static id _instace = nil; \
+ (id)allocWithZone:(struct _NSZone *)zone \
{ \
if (_instace == nil) { \
static dispatch_once_t onceToken; \
dispatch_once(&onceToken, ^{ \
_instace = [super allocWithZone:zone]; \
}); \
} \
return _instace; \
} \
\
- (id)init \
{ \
static dispatch_once_t onceToken; \
dispatch_once(&onceToken, ^{ \
_instace = [super init]; \
}); \
return _instace; \
} \
\
+ (instancetype)shared##methodName \
{ \
return [[self alloc] init]; \
} \
+ (id)copyWithZone:(struct _NSZone *)zone \
{ \
return _instace; \
} \
\
+ (id)mutableCopyWithZone:(struct _NSZone *)zone \
{ \
return _instace; \
}

#else // 不是ARC

#define SingletonM(methodName) \
static id _instace = nil; \
+ (id)allocWithZone:(struct _NSZone *)zone \
{ \
if (_instace == nil) { \
static dispatch_once_t onceToken; \
dispatch_once(&onceToken, ^{ \
_instace = [super allocWithZone:zone]; \
}); \
} \
return _instace; \
} \
\
- (id)init \
{ \
static dispatch_once_t onceToken; \
dispatch_once(&onceToken, ^{ \
_instace = [super init]; \
}); \
return _instace; \
} \
\
+ (instancetype)shared##methodName \
{ \
return [[self alloc] init]; \
} \
\
- (oneway void)release \
{ \
\
} \
\
- (id)retain \
{ \
return self; \
} \
\
- (NSUInteger)retainCount \
{ \
return 1; \
} \
+ (id)copyWithZone:(struct _NSZone *)zone \
{ \
    return _instace; \
} \
 \
+ (id)mutableCopyWithZone:(struct _NSZone *)zone \
{ \
    return _instace; \
}

#endif  //Singleton.h

其中這個單例形式先在UserInfoModel.h中
SingletonH(UserInfoModel);
再在.m中

SingletonM(UserInfoModel);




初始化賦值

//UserInfoModel是個單例,此處初始化後,數據會不斷隨使用順序的啟動而存在
 UserInfoModel *userInfoModel = [UserInfoModel mj_objectWithKeyValues:responseData.responSEObject[0]];
//其中mj_objectWithKeyValues是mj辦法的其中一種,概況請看自己另一篇文章引見常用mj
調用獲取單例中的值,比方獲取id

[UserInfoModel sharedUserInfoModel].ID






【iOS開發 常用宏定義】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved