美文网首页
iOS开发常用的宏定义

iOS开发常用的宏定义

作者: AbnerZhang | 来源:发表于2016-09-22 10:12 被阅读48次

大家都是知道开发中使用宏不仅方便,而且可以提高开发效率, 代码清晰易懂。下面我总结了我在做iOS开发时的一些常用宏

一. 获取屏幕的相关信息

//获取屏幕宽高, 宽度与高度

#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 StatusBar_HEIGHT 20

#define NavigationBar_HEIGHT 44

#define NavigationBarIcon 20

#define TabBar_HEIGHT 49

#define TabBarIcon 30

#define kTopBarHeight      44.f

#define iPhone4 (CGSizeEqualToSize(CGSizeMake(320,480), [UIScreen mainScreen].bounds.size) ?YES: NO)

#define iPhone5 (CGSizeEqualToSize(CGSizeMake(320,568), [UIScreen mainScreen].bounds.size) ?YES: NO)

#define iPhone6 (CGSizeEqualToSize(CGSizeMake(375,667), [UIScreen mainScreen].bounds.size) ?YES: NO)

#define iPhone6plus (CGSizeEqualToSize(CGSizeMake(414,736), [UIScreen mainScreen].bounds.size) ?YES: NO)

适配iPhone 机型的宏定义

#define iPhoneXR (CGSizeEqualToSize(CGSizeMake(414,896), [UIScreen mainScreen].bounds.size) ?YES: NO)

#define iPhoneXSMax (CGSizeEqualToSize(CGSizeMake(414,896), [UIScreen mainScreen].bounds.size) ?YES: NO)

#define iPhoneXS  (CGSizeEqualToSize(CGSizeMake(375,812), [UIScreen mainScreen].bounds.size) ?YES: NO)

#define iPhoneX  ((iPhoneXS || iPhoneXR || iPhoneXSMax) ? YES : NO)

#define kStatusBarHeight  (iPhoneX ?44.f:20.f)

#define kBottomBarHeight  (iPhoneX ?83.f:49.f)

#define kIPhoneXBottomStatusBarHeight (iPhoneX ?34.f:0.f)

二. 打印输出

//开发的时候打印,但是发布的时候不打印的NSLog

#ifdef DEBUG

#define NSLog(...) NSLog(@"%s 第%d行 \n %@\n\n",__func__,__LINE__,[NSString stringWithFormat:__VA_ARGS__])

#else

#define NSLog(...)

#endif

三. 常用量的缩写

#define kApplication        [UIApplication sharedApplication]

#define kKeyWindow          [UIApplication sharedApplication].keyWindow

#define kAppDelegate        [UIApplication sharedApplication].delegate

#define kUserDefaults      [NSUserDefaults standardUserDefaults]

#define kNotificationCenter [NSNotificationCenter defaultCenter]

四. 判断是否为空

//字符串是否为空

#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))

五. 真机还是模拟器

//判断是真机还是模拟器

#if TARGET_OS_IPHONE

//真机

#endif

#if TARGET_IPHONE_SIMULATOR

//模拟器

#endif

六. 颜色

//颜色

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

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

#define kRandomColor  KRGBColor(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.0 alpha: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)

九. 获取当前信息

//APP版本号

#define kAppVersion [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]

//系统版本号

#define kSystemVersion [[UIDevice currentDevice] systemVersion]

//判断设备的操做系统是不是ios7

#define IOS7 ([[UIDevice currentDevice].systemVersion doubleValue] >= 7.0]

//获取当前语言

#define kCurrentLanguage ([[NSLocale preferredLanguages] objectAtIndex:0])

//判断是否为iPhone

#define kISiPhone (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)

//判断是否为iPad

#define kISiPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)

//是否是Retina屏

#define kISRetina ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 960), [[UIScreen mainScreen] currentMode].size) : NO)

//获取沙盒Document路径

#define kDocumentPath [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]

//获取沙盒temp路径

#define kTempPath NSTemporaryDirectory()

//获取沙盒Cache路径

#define kCachePath [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject]

十. 内存

//使用ARC和不使用ARC

#if __has_feature(objc_arc)

//compiling with ARC

#else

// compiling without ARC

#endif

十一. 读取图片

//读取本地图片

#define LOADIMAGE(file,ext) [UIImage imageWithContentsOfFile:[NSBundle mainBundle]pathForResource:file ofType:ext]

//定义UIImage对象

#define ImageNamed(name) [UIImage imageNamed:name]

十二.释放一个对象

#define SAFE_DELETE(P) if(P) { [P release], P = nil; }

#define SAFE_RELEASE(x) [x release];x=nil

十三.G-C-D

#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)

持续更新中.....

(PS:本篇文章为总结性文章, 如有侵权, 感谢作者)

相关文章

  • iOS 常用宏定义

    iOS 开发中使用一些常用宏定义可以大大提高开发效率,提高代码的重用性.以下是一些常用的宏定义: 像这些宏定义,在...

  • iOS开发常用的工具类和宏定义

    iOS开发常用的工具类和宏定义 开发总结的工具类和宏 https://github.com/xiaoChen66...

  • iOS开发中常用的宏

    以下为iOS开发中常用宏: 引用:ios开发常用的宏,大家一起来收集 参考:ios开发常用的宏,大家一起来收集~

  • iOS开发中常用的宏定义

    iOS开发中常用的宏定义 尺寸宏 打印宏 替换NSLog来使用,debug模式下可以打印很多方法名,行信息。 #...

  • iOS 开发小经验

    iOS 开发中你是否遇到这些经验问题(一)iOS 开发中你是否遇到这些经验问题(二)iOS 日常工作之常用宏定义大全

  • iOS 开发常用宏定义

  • iOS开发常用宏定义

    做开发不久,经常会上网找一些资料,简书上的内容是看着比较顺眼的了;特此也想把平时工作中遇到的问题总结记录下来,希望...

  • iOS开发常用宏定义

    iOS 日常工作之常用宏定义大全iOS-OC中常见的一些宏YYCategories 目录 1、长、宽、高2、判断设...

  • iOS 开发常用宏定义

  • iOS开发常用宏定义

    判断设备类型iPad/iPhone#define IS_IPAD(UI_USER_INTERFACE_IDIOM(...

网友评论

      本文标题:iOS开发常用的宏定义

      本文链接:https://www.haomeiwen.com/subject/swhzettx.html