OC常用宏
#ifndef iOS_Constants_h #define iOS_Constants_h /* ****************************************************************************************************************** */ /** DEBUG LOG **/ #ifdef DEBUG #define DLog( s, ... ) NSLog( @"< %@:(%d) > %@", [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__] ) #else #define DLog( s, ... ) #endif /** DEBUG RELEASE **/ #if DEBUG #define MCRelease(x) [x release] #else #define MCRelease(x) [x release], x = nil #endif /** NIL RELEASE **/ #define NILRelease(x) [x release], x = nil /* ****************************************************************************************************************** */ #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) /* ****************************************************************************************************************** */ #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