// iOS中宏的名字都是大写字母,单词间用下划线分隔,宏方法的参数名都是以下划线开头

// 宏常量
#define NavigationBar_HEIGHT 44
#define StatusBar_HEIGHT 20
#define Margin10 10
#define TabBarIcon 30
#define TabBar_HEIGHT 49
//---------------------------屏幕适配---------------------------------
#define SCREEN_WIDTH  ([UIScreen mainScreen].bounds.size.width)
#define SCREEN_HEIGHT ([UIScreen mainScreen].bounds.size.height)
#define isIphone6p (SCREEN_HEIGHT == 736)
#define isIphone6 (SCREEN_HEIGHT == 667)
#define isIphone5 (SCREEN_HEIGHT == 568)
#define isIphone4 (SCREEN_HEIGHT == 480)
#define SYSTEM_VERSION ([[[UIDevice currentDevice] systemVersion] floatValue])


//---------------------------宏变量---------------------------------

#define WeakSelf  __weak typeof(self) weakSelf = self;

//---------------------------宏方法---------------------------------
#define RGB(_r, _g, _b) [UIColor colorWithRed:(_r)/255.0 green:(_g)/255.0 blue:(_b)/255.0 alpha:1]

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

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

// 角度转弧度
#define angle2Radian(angle) ((angle) / 180.0 * M_PI)
// 弧度转角度
#define radian2Angle(radian) ((radian) / M_PI * 180.0)

#define FONT(_size) [UIFont fontWithName:@"FZHTJW--GB1-0" size:_size]

#define imageNamed(_name) [UIImage imageNamed:[NSString stringWithFormat:@"%@", _name]]
//---------------------------宏方法---------------------------------

#define viewWithTag(_superView, _tag) [_superViewviewWithTag : (_tag)]
//判断是否为iPhone
#define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
//判断是否为iPad
#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
//判断是否为ipod
#define IS_IPOD ([[[UIDevice currentDevice] model] isEqualToString:@"iPod touch"])
// 判断是否为iPhone5
#define IS_IPHONE5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO)
// 判断是否retain屏
#define IS_RETINA ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 960), [[UIScreen mainScreen] currentMode].size) : NO)


// 宏判断
#ifdef DEBUG
#   define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
#   define DLog(...)
#endif

#ifdef DEBUG
#define Func NSLog((@"%s - %d "), __PRETTY_FUNCTION__, __LINE__);
#else
#define NSLog(...);
#endif


//---------------------------代码片段---------------------------------
// 单例
#define SINGLETON(classname) \
\
static classname *shared##classname = nil; \
\
+ (classname *)shared##classname \
{ \
@synchronized(self) \
{ \
if (shared##classname == nil) \
{ \
shared##classname = [[self alloc] init]; \
} \
} \
\
return shared##classname; \
} \
\
+ (id)allocWithZone:(NSZone *)zone \
{ \
@synchronized(self) \
{ \
if (shared##classname == nil) \
{ \
shared##classname = [super allocWithZone:zone]; \
return shared##classname; \
} \
} \
\
return nil; \
} \
\
- (id)copyWithZone:(NSZone *)zone \
{ \
return self; \
}

常用类扩展

UIColor + HEX