#ifndef __IPHONE_5_0 #warning "This project uses features only available in iOS SDK 5.0 and later." #endif #ifdef __OBJC__ #import <UIKit/UIKit.h> #import <Foundation/Foundation.h> // 1.日志开关 #ifdef DEBUG #define CXLog(...) NSLog(__VA_ARGS__) #else #define CXLog(...) #endif // 2.判断是否为iOS7 #define iOS7 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) // 3.获得颜色 #define CXColor(r, g, b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1] // 4.加载JSON对象 #define CXJson(name) [NSJSONSerialization JSONObjectWithData:[NSData dataWithContentsOfURL:[[NSBundle mainBundle] URLForResource:@#name withExtension:nil]] options:NSJSONReadingAllowFragments error:nil] // 5.全局背景色 #define CXGlobalBg [UIColor colorWithPatternImage:[UIImage imageNamed:@"bg"]]
// 6.判断是否为4inch #define is4inch ([UIScreen mainScreen].bounds.size.height == 568.0) #endif #define EMOTION_CACHE_PATH @"cachedemotions" #define EMOTION_RECENT_USED @"recentusedemotions" #define EMOTION_CATEGORIES @"categoryemotions" #define EMOTION_TOPICS @"emotiontopics" // 收藏相关 #define COLLECT_CACHE_PATH @"collected" // 配图相关 #define WATERFALL_ITEM_HEIGHT_MAX 300 #define WATERFALL_ITEM_WIDTH 146
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
1、release时,屏蔽log #if defined (DEBUG) && DEBUG == 1 #else #define NSLog(...) {}; #endif 2、在主线程或在后台执行block #define BACK(block) dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), block) #define MAIN(block) dispatch_async(dispatch_get_main_queue(),block) 3、设备相关 #define isRetina ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 960), [[UIScreen mainScreen] currentMode].size) : NO) #define iPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO) #define isPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) <br> #define CurrentSystemVersion ([[UIDevice currentDevice] systemVersion]) #define CurrentLanguage ([[NSLocale preferredLanguages] objectAtIndex:0]) 4、区分模拟器和真机 #if TARGET_OS_IPHONE <br> //iPhone Device
#endif #if TARGET_IPHONE_SIMULATOR <br> //iPhone Simulator #endif 5、根据是否使用ARC做不同操作 #if __has_feature(objc_arc) //compiling with ARC
#else // compiling without ARC
#endif |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
#pragma mark - Frame (宏 x, y, width, height) // Screen Scale #define MainScreenScale [[UIScreen mainScreen] scale] // App Frame #define Application_Frame [[UIScreen mainScreen] applicationFrame] // App Frame Height&Width #define App_Frame_Height [[UIScreen mainScreen] applicationFrame].size.height #define App_Frame_Width [[UIScreen mainScreen] applicationFrame].size.width // MainScreen Height&Width #define Main_Screen_Height [[UIScreen mainScreen] bounds].size.height #define Main_Screen_Width [[UIScreen mainScreen] bounds].size.width // View 坐标(x,y)和宽高(width,height) #define X(v) (v).frame.origin.x #define Y(v) (v).frame.origin.y #define WIDTH(v) (v).frame.size.width #define HEIGHT(v) (v).frame.size.height #define MinX(v) CGRectGetMinX((v).frame) #define MinY(v) CGRectGetMinY((v).frame) #define MidX(v) CGRectGetMidX((v).frame) #define MidY(v) CGRectGetMidY((v).frame) #define MaxX(v) CGRectGetMaxX((v).frame) #define MaxY(v) CGRectGetMaxY((v).frame) // 系统控件默认高度 #define kStatusBarHeight (20.f) #define kTopBarHeight (44.f) #define kBottomBarHeight (49.f) #define kCellDefaultHeight (44.f) #define kEnglishKeyboardHeight (216.f) #define kChineseKeyboardHeight (252.f) |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
|
#pragma mark - Funtion Method (宏 方法) // PNG JPG 图片路径 #define PNGPATH(NAME) [[NSBundle mainBundle] pathForResource:[NSString stringWithUTF8String:NAME] ofType:@"png"] #define JPGPATH(NAME) [[NSBundle mainBundle] pathForResource:[NSString stringWithUTF8String:NAME] ofType:@"jpg"] #define PATH(NAME, EXT) [[NSBundle mainBundle] pathForResource:(NAME) ofType:(EXT)] // 加载图片 #define PNGIMAGE(NAME) [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:(NAME) ofType:@"png"]] #define JPGIMAGE(NAME) [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:(NAME) ofType:@"jpg"]] #define IMAGE(NAME, EXT) [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:(NAME) ofType:(EXT)]] #define IMAGENAMED(NAME) [UIImage imageNamed:NAME] // 字体大小(常规/粗体) #define BOLDSYSTEMFONT(FONTSIZE)[UIFont boldSystemFontOfSize:FONTSIZE] #define SYSTEMFONT(FONTSIZE) [UIFont systemFontOfSize:FONTSIZE] #define FONT(NAME, FONTSIZE) [UIFont fontWithName:(NAME) size:(FONTSIZE)] // 颜色(RGB) #define RGBCOLOR(r, g, b) [UIColor colorWithRed:(r)/255.0f green:(g)/255.0f blue:(b)/255.0f alpha:1] #define RGBACOLOR(r, g, b, a) [UIColor colorWithRed:(r)/255.0f green:(g)/255.0f blue:(b)/255.0f alpha:(a)] // 当前版本 #define FSystemVersion ([[[UIDevice currentDevice] systemVersion] floatValue]) #define DSystemVersion ([[[UIDevice currentDevice] systemVersion] doubleValue]) #define SSystemVersion ([[UIDevice currentDevice] systemVersion]) // 当前语言 #define CURRENTLANGUAGE ([[NSLocale preferredLanguages] objectAtIndex:0]) // 是否Retina屏 #define isRetina ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? \ CGSizeEqualToSize(CGSizeMake(640, 960), \
[[UIScreen mainScreen] currentMode].size) : \
NO )
// 是否iPhone5 #define isiPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? \ CGSizeEqualToSize(CGSizeMake(640, 1136), \
[[UIScreen mainScreen] currentMode].size) : \
NO )
// 是否iPad #define isPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) // UIView - viewWithTag #define VIEWWITHTAG(_OBJECT, _TAG)\ \
[_OBJECT viewWithTag : _TAG]
// 本地化字符串 /** NSLocalizedString宏做的其实就是在当前bundle中查找资源文件名“Localizable.strings”(参数:键+注释) */ #define LocalString(x, ...) NSLocalizedString(x, nil) /** NSLocalizedStringFromTable宏做的其实就是在当前bundle中查找资源文件名“xxx.strings”(参数:键+文件名+注释) */ #define AppLocalString(x, ...) NSLocalizedStringFromTable(x, @"zjj", nil) // App Name #define AppDisplayName [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"] // RGB颜色转换(16进制->10进制) #define UIColorFromRGB(rgbValue)\ \
[UIColor colorWithRed:(( float )((rgbValue & 0xFF0000) >> 16))/255.0 \
green:(( float )((rgbValue & 0xFF00) >> 8))/255.0 \
blue:(( float )(rgbValue & 0xFF))/255.0 \
alpha:1.0]
#if TARGET_OS_IPHONE /** iPhone Device */ #endif #if TARGET_IPHONE_SIMULATOR /** iPhone Simulator */ #endif // ARC #if __has_feature(objc_arc) /** Compiling with ARC */ #else /** Compiling without ARC */ #endif /* ****************************************************************************************************************** */ #pragma mark - Log Method (宏 LOG) // 日志 / 断点 // ============================================================================================================================= // DEBUG模式 #define ITTDEBUG // LOG等级 #define ITTLOGLEVEL_INFO 10 #define ITTLOGLEVEL_WARNING 3 #define ITTLOGLEVEL_ERROR 1 // ============================================================================================================================= // LOG最高等级 #ifndef ITTMAXLOGLEVEL #ifdef DEBUG #define ITTMAXLOGLEVEL ITTLOGLEVEL_INFO #else #define ITTMAXLOGLEVEL ITTLOGLEVEL_ERROR #endif #endif // ============================================================================================================================= // LOG PRINT // The general purpose logger. This ignores logging levels. #ifdef ITTDEBUG #define ITTDPRINT(xx, ...) NSLog(@"< %s:(%d) > : " xx , __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__) #else #define ITTDPRINT(xx, ...) ((void)0) #endif // Prints the current method‘s name. #define ITTDPRINTMETHODNAME() ITTDPRINT(@"%s", __PRETTY_FUNCTION__) // Log-level based logging macros. #if ITTLOGLEVEL_ERROR <= ITTMAXLOGLEVEL #define ITTDERROR(xx, ...) ITTDPRINT(xx, ##__VA_ARGS__) #else #define ITTDERROR(xx, ...) ((void)0) #endif #if ITTLOGLEVEL_WARNING <= ITTMAXLOGLEVEL #define ITTDWARNING(xx, ...) ITTDPRINT(xx, ##__VA_ARGS__) #else #define ITTDWARNING(xx, ...) ((void)0) #endif #if ITTLOGLEVEL_INFO <= ITTMAXLOGLEVEL #define ITTDINFO(xx, ...) ITTDPRINT(xx, ##__VA_ARGS__) #else #define ITTDINFO(xx, ...) ((void)0) #endif // 条件LOG #ifdef ITTDEBUG #define ITTDCONDITIONLOG(condition, xx, ...)\ \
{\
if
((condition))\
{\
ITTDPRINT(xx, ##__VA_ARGS__);\
}\
}
#else #define ITTDCONDITIONLOG(condition, xx, ...)\ \
(( void )0)
#endif // 断点Assert #define ITTAssert(condition, ...)\ \
do
{\
if
(!(condition))\
{\
[[ NSAssertionHandler
currentHandler]\
handleFailureInFunction:[ NSString
stringWithFormat:@ "< %s >" , __PRETTY_FUNCTION__]\
file:[[ NSString
stringWithUTF8String:__FILE__] lastPathComponent]\
lineNumber:__LINE__\
description:__VA_ARGS__];\
}\
} while (0)
/* ****************************************************************************************************************** */ #pragma mark - Constants (宏 常量) /** 时间间隔 */ #define kHUDDuration (1.f) /** 一天的秒数 */ #define SecondsOfDay (24.f * 60.f * 60.f) /** 秒数 */ #define Seconds(Days) (24.f * 60.f * 60.f * (Days)) /** 一天的毫秒数 */ #define MillisecondsOfDay (24.f * 60.f * 60.f * 1000.f) /** 毫秒数 */ #define Milliseconds(Days) (24.f * 60.f * 60.f * 1000.f * (Days)) #endif |
宏
符合ANSI的预定义宏:
__DATE__:表示当前源文件编译时的日期,格式为:月/天/年(Mmm dd yyyy)。
__FILE__:表示当前正在处理的源文件名称。
__LINE__:表示当前正在处理的源文件的行,可以用#line指令修改。
__STDC__:表示是ANSI C标准。只有在编译器选项指定了/Za,并且不是编译C++程序时,被定义为常整数1;否则未定义。
__TIME__:表示当前源文件的最近编译时的时间,格式为:小时/分/秒(hh:mm:ss)。
__TIMESTAMP__:表示当前源文件的最近修改日期和时间,格式为:Ddd Mmm dd hh:mm:ss yyyy,其中Ddd是星期的缩写。