iOS 常用宏(OC) 发表于 2016-10-22 | 分类于 Mobile | 评论数: | 阅读次数: iOS 常用宏(OC) 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166//字符串是否为空#define kStringIsEmpty(str) ([str isKindOfClass:[NSNull class]] || str == nil || [str length] <1? YES : NO )//数组是否为空#define kArrayIsEmpty(array) (array == nil || [array isKindOfClass:[NSNull class]] || array.count ==0)//字典是否为空#define kDictIsEmpty(dic) (dic == nil || [dic isKindOfClass:[NSNull class]] || dic.allKeys ==0)//是否是空对象#define kObjectIsEmpty(_object) (_object == nil \|| [_object isKindOfClass:[NSNull class]] \|| ([_object respondsToSelector:@selector(length)] && [(NSData *)_object length] ==0) \|| ([_object respondsToSelector:@selector(count)] && [(NSArray*)_object count] ==0))//获取屏幕宽度与高度#define kScreenWidth \([[UIScreen mainScreen] respondsToSelector:@selector(nativeBounds)] ? [UIScreen mainScreen].nativeBounds.size.width/[UIScreen mainScreen].nativeScale : [UIScreen mainScreen].bounds.size.width)#define kScreenHeight \([[UIScreen mainScreen] respondsToSelector:@selector(nativeBounds)] ? [UIScreen mainScreen].nativeBounds.size.height/[UIScreen mainScreen].nativeScale : [UIScreen mainScreen].bounds.size.height)#define kScreenSize \([[UIScreen mainScreen] respondsToSelector:@selector(nativeBounds)] ? CGSizeMake([UIScreen mainScreen].nativeBounds.size.width/[UIScreen mainScreen].nativeScale,[UIScreen mainScreen].nativeBounds.size.height/[UIScreen mainScreen].nativeScale) : [UIScreen mainScreen].bounds.size)//一些缩写#define kApplication[UIApplication sharedApplication]#define kKeyWindow[UIApplication sharedApplication].keyWindow#define kAppDelegate(AppDelegate *)[UIApplication sharedApplication].delegate#define kUserDefaults[NSUserDefaults standardUserDefaults]#define kNotificationCenter [NSNotificationCenter defaultCenter]#define kUserDefaultsObjectForKey(str) [[NSUserDefaults standardUserDefaults]objectForKey:str]//APP版本号#define kAppVersion [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]//系统版本号#define kSystemVersion [[UIDevice currentDevice] systemVersion]//获取当前语言#define kCurrentLanguage ([[NSLocale preferredLanguages] objectAtIndex:0])//判断是否为iPhone#define kISiPhone (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)//判断是否为iPad#define kISiPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)//获取沙盒Document路径#define kDocumentPath [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]//获取沙盒temp路径#define kTempPath NSTemporaryDirectory()//获取沙盒Cache路径#define kCachePath [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject]//判断是真机还是模拟器#if TARGET_OS_IPHONE//真机#endif#if TARGET_IPHONE_SIMULATOR//模拟器#endif//开发的时候打印,但是发布的时候不打印的NSLog#ifdef DEBUG #define NSLog(...) NSLog(@"%s第%d行\n %@\n\n",__func__,__LINE__,[NSString stringWithFormat:__VA_ARGS__])#else#define NSLog(...)#endif//颜色相关宏#define kRGBColor(r, g, b)[UIColor colorWithRed:(r)/255.0green:(g)/255.0blue:(b)/255.0alpha:1.0]#define kRGBAColor(r, g, b, a) [UIColor colorWithRed:(r)/255.0green:(r)/255.0blue:(r)/255.0alpha:a]#define kRandomColorKRGBColor(arc4random_uniform(256)/255.0,arc4random_uniform(256)/255.0,arc4random_uniform(256)/255.0)#define kColorWithHex(rgbValue) \[UIColor colorWithRed:((float)((rgbValue &0xFF0000) >>16)) /255.0\green:((float)((rgbValue &0xFF00) >>8)) /255.0\blue:((float)(rgbValue &0xFF)) /255.0alpha:1.0]#define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue &0xFF0000) >>16))/255.0green:((float)((rgbValue &0xFF00) >>8))/255.0blue:((float)(rgbValue &0xFF))/255.0alpha:1.0]//弱引用/强引用#define kWeakSelf(type)__weak typeof(type) weak##type = type;#define kStrongSelf(type) __strong typeof(type) type = weak##type;//由角度转换弧度#define kDegreesToRadian(x)(M_PI * (x) /180.0)//由弧度转换角度#define kRadianToDegrees(radian) (radian *180.0) / (M_PI)//获取一段时间间隔#define kStartTime CFAbsoluteTime start = CFAbsoluteTimeGetCurrent();#define kEndTimeNSLog(@"Time: %f", CFAbsoluteTimeGetCurrent() - start)//标准系统状态栏高度#define SYS_STATUSBAR_HEIGHT20//热点栏高度#define HOTSPOT_STATUSBAR_HEIGHT20//导航栏(UINavigationController.UINavigationBar)高度#define NAVIGATIONBAR_HEIGHT44//工具栏(UINavigationController.UIToolbar)高度#define TOOLBAR_HEIGHT 44//标签栏(UITabBarController.UITabBar)高度#define TABBAR_HEIGHT 44// APP_STATUSBAR_HEIGHT=SYS_STATUSBAR_HEIGHT+[HOTSPOT_STATUSBAR_HEIGHT]#define APP_STATUSBAR_HEIGHT(CGRectGetHeight([UIApplication sharedApplication].statusBarFrame))//根据APP_STATUSBAR_HEIGHT判断是否存在热点栏#define IS_HOTSPOT_CONNECTED(APP_STATUSBAR_HEIGHT==(SYS_STATUSBAR_HEIGHT+HOTSPOT_STATUSBAR_HEIGHT)?YES:NO)//无热点栏时,标准系统状态栏高度+导航栏高度#define NORMAL_STATUS_AND_NAV_BAR_HEIGHT(SYS_STATUSBAR_HEIGHT+NAVIGATIONBAR_HEIGHT)//实时系统状态栏高度+导航栏高度,如有热点栏,其高度包含在APP_STATUSBAR_HEIGHT中。#define STATUS_AND_NAV_BAR_HEIGHT(APP_STATUSBAR_HEIGHT+NAVIGATIONBAR_HEIGHT)//读取本地图片#define LOADIMAGE(file,ext) [UIImage imageWithContentsOfFile:[[NSBundle mainBundle]pathForResource:file ofType:ext]]