1 #ifndef MacroDefinition_h 2 #define MacroDefinition_h 3 4 //-------------------获取设备大小------------------------- 5 //NavBar高度 6 #define NavigationBar_HEIGHT 44 7 //获取屏幕 宽度、高度 8 #define SCREEN_WIDTH ([UIScreen mainScreen].bounds.size.width) 9 #define SCREEN_HEIGHT ([UIScreen mainScreen].bounds.size.height) 10 11 //-------------------获取设备大小------------------------- 12 13 14 //-------------------打印日志------------------------- 15 //DEBUG 模式下打印日志,当前行 16 #ifdef DEBUG 17 # define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__); 18 #else 19 # define DLog(...) 20 #endif 21 22 23 //重写NSLog,Debug模式下打印日志和当前行数 24 #if DEBUG 25 #define NSLog(FORMAT, ...) fprintf(stderr," function:%s line:%d content:%s ", __FUNCTION__, __LINE__, [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]); 26 #else 27 #define NSLog(FORMAT, ...) nil 28 #endif 29 30 //DEBUG 模式下打印日志,当前行 并弹出一个警告 31 #ifdef DEBUG 32 # define ULog(fmt, ...) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:[NSString stringWithFormat:@"%s [Line %d] ", __PRETTY_FUNCTION__, __LINE__] message:[NSString stringWithFormat:fmt, ##__VA_ARGS__] delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil]; [alert show]; } 33 #else 34 # define ULog(...) 35 #endif 36 37 38 #define ITTDEBUG 39 #define ITTLOGLEVEL_INFO 10 40 #define ITTLOGLEVEL_WARNING 3 41 #define ITTLOGLEVEL_ERROR 1 42 43 #ifndef ITTMAXLOGLEVEL 44 45 #ifdef DEBUG 46 #define ITTMAXLOGLEVEL ITTLOGLEVEL_INFO 47 #else 48 #define ITTMAXLOGLEVEL ITTLOGLEVEL_ERROR 49 #endif 50 51 #endif 52 53 // The general purpose logger. This ignores logging levels. 54 #ifdef ITTDEBUG 55 #define ITTDPRINT(xx, ...) NSLog(@"%s(%d): " xx, __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__) 56 #else 57 #define ITTDPRINT(xx, ...) ((void)0) 58 #endif 59 60 // Prints the current method's name. 61 #define ITTDPRINTMETHODNAME() ITTDPRINT(@"%s", __PRETTY_FUNCTION__) 62 63 // Log-level based logging macros. 64 #if ITTLOGLEVEL_ERROR <= ITTMAXLOGLEVEL 65 #define ITTDERROR(xx, ...) ITTDPRINT(xx, ##__VA_ARGS__) 66 #else 67 #define ITTDERROR(xx, ...) ((void)0) 68 #endif 69 70 #if ITTLOGLEVEL_WARNING <= ITTMAXLOGLEVEL 71 #define ITTDWARNING(xx, ...) ITTDPRINT(xx, ##__VA_ARGS__) 72 #else 73 #define ITTDWARNING(xx, ...) ((void)0) 74 #endif 75 76 #if ITTLOGLEVEL_INFO <= ITTMAXLOGLEVEL 77 #define ITTDINFO(xx, ...) ITTDPRINT(xx, ##__VA_ARGS__) 78 #else 79 #define ITTDINFO(xx, ...) ((void)0) 80 #endif 81 82 #ifdef ITTDEBUG 83 #define ITTDCONDITIONLOG(condition, xx, ...) { if ((condition)) { 84 ITTDPRINT(xx, ##__VA_ARGS__); 85 } 86 } ((void)0) 87 #else 88 #define ITTDCONDITIONLOG(condition, xx, ...) ((void)0) 89 #endif 90 91 #define ITTAssert(condition, ...) 92 do { 93 if (!(condition)) { 94 [[NSAssertionHandler currentHandler] 95 handleFailureInFunction:[NSString stringWithUTF8String:__PRETTY_FUNCTION__] 96 file:[NSString stringWithUTF8String:__FILE__] 97 lineNumber:__LINE__ 98 description:__VA_ARGS__]; 99 } 100 } while(0) 101 102 //---------------------打印日志-------------------------- 103 104 105 //----------------------系统---------------------------- 106 107 //获取系统版本 108 #define IOS_VERSION [[[UIDevice currentDevice] systemVersion] floatValue] 109 #define CurrentSystemVersion [[UIDevice currentDevice] systemVersion] 110 111 //获取当前语言 112 #define CurrentLanguage ([[NSLocale preferredLanguages] objectAtIndex:0]) 113 114 //判断是否 Retina屏、设备是否%fhone 5、是否是iPad 115 #define isRetina ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 960), [[UIScreen mainScreen] currentMode].size) : NO) 116 #define iPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO) 117 #define isPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 118 119 120 //判断是真机还是模拟器 121 #if TARGET_OS_IPHONE 122 //iPhone Device 123 #endif 124 125 #if TARGET_IPHONE_SIMULATOR 126 //iPhone Simulator 127 #endif 128 129 //检查系统版本 130 #define SYSTEM_VERSION_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame) 131 #define SYSTEM_VERSION_GREATER_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending) 132 #define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending) 133 #define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending) 134 #define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending) 135 136 137 //----------------------系统---------------------------- 138 139 140 //----------------------内存---------------------------- 141 142 //使用ARC和不使用ARC 143 #if __has_feature(objc_arc) 144 //compiling with ARC 145 #else 146 // compiling without ARC 147 #endif 148 149 #pragma mark - common functions 150 #define RELEASE_SAFELY(__POINTER) { [__POINTER release]; __POINTER = nil; } 151 152 //释放一个对象 153 #define SAFE_DELETE(P) if(P) { [P release], P = nil; } 154 155 #define SAFE_RELEASE(x) [x release];x=nil 156 157 158 159 //----------------------内存---------------------------- 160 161 162 //----------------------图片---------------------------- 163 164 //读取本地图片 165 #define LOADIMAGE(file,ext) [UIImage imageWithContentsOfFile:[[NSBundle mainBundle]pathForResource:file ofType:ext]] 166 167 //定义UIImage对象 168 #define IMAGE(A) [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:A ofType:nil]] 169 170 //定义UIImage对象 171 #define ImageNamed(_pointer) [UIImage imageNamed:[UIUtil imageName:_pointer]] 172 173 //建议使用前两种宏定义,性能高于后者 174 //----------------------图片---------------------------- 175 176 177 178 //----------------------颜色类--------------------------- 179 // rgb颜色转换(16进制->10进制) 180 #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] 181 182 //带有RGBA的颜色设置 183 #define COLOR(R, G, B, A) [UIColor colorWithRed:R/255.0 green:G/255.0 blue:B/255.0 alpha:A] 184 185 // 获取RGB颜色 186 #define RGBA(r,g,b,a) [UIColor colorWithRed:r/255.0f green:g/255.0f blue:b/255.0f alpha:a] 187 #define RGB(r,g,b) RGBA(r,g,b,1.0f) 188 189 //背景色 190 #define BACKGROUND_COLOR [UIColor colorWithRed:242.0/255.0 green:236.0/255.0 blue:231.0/255.0 alpha:1.0] 191 192 //清除背景色 193 #define CLEARCOLOR [UIColor clearColor] 194 195 #pragma mark - color functions 196 #define RGBCOLOR(r,g,b) [UIColor colorWithRed:(r)/255.0f green:(g)/255.0f blue:(b)/255.0f alpha:1] 197 #define RGBACOLOR(r,g,b,a) [UIColor colorWithRed:(r)/255.0f green:(g)/255.0f blue:(b)/255.0f alpha:(a)] 198 199 //----------------------颜色类-------------------------- 200 201 202 203 //----------------------其他---------------------------- 204 205 //方正黑体简体字体定义 206 #define FONT(F) [UIFont fontWithName:@"FZHTJW--GB1-0" size:F] 207 208 209 //定义一个API 210 #define APIURL @"http://xxxxx/" 211 //登陆API 212 #define APILogin [APIURL stringByAppendingString:@"Login"] 213 214 //设置View的tag属性 215 #define VIEWWITHTAG(_OBJECT, _TAG) [_OBJECT viewWithTag : _TAG] 216 //程序的本地化,引用国际化的文件 217 #define MyLocal(x, ...) NSLocalizedString(x, nil) 218 219 //G-C-D 220 #define BACK(block) dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), block) 221 #define MAIN(block) dispatch_async(dispatch_get_main_queue(),block) 222 223 //NSUserDefaults 实例化 224 #define USER_DEFAULT [NSUserDefaults standardUserDefaults] 225 226 227 //由角度获取弧度 有弧度获取角度 228 #define degreesToRadian(x) (M_PI * (x) / 180.0) 229 #define radianToDegrees(radian) (radian*180.0)/(M_PI) 230 231 232 233 //单例化一个类 234 #define SYNTHESIZE_SINGLETON_FOR_CLASS(classname) 235 236 static classname *shared##classname = nil; 237 238 + (classname *)shared##classname 239 { 240 @synchronized(self) 241 { 242 if (shared##classname == nil) 243 { 244 shared##classname = [[self alloc] init]; 245 } 246 } 247 248 return shared##classname; 249 } 250 251 + (id)allocWithZone:(NSZone *)zone 252 { 253 @synchronized(self) 254 { 255 if (shared##classname == nil) 256 { 257 shared##classname = [super allocWithZone:zone]; 258 return shared##classname; 259 } 260 } 261 262 return nil; 263 } 264 265 - (id)copyWithZone:(NSZone *)zone 266 { 267 return self; 268 } 269 270 271 272 #endif