当前位置: 移动技术网 > IT编程>移动开发>IOS > iOS常用宏定义

iOS常用宏定义

2018年03月20日  | 移动技术网IT编程  | 我要评论

重庆到连界,pinset,殷保华工作线

iOS常用宏定义。

字符串是否为空

#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 [UIApplication sharedApplication].delegate

#define kUserDefaults [NSUserDefaults standardUserDefaults]

#define kNotificationCenter [NSNotificationCenter defaultCenter]

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

获取一段时间间隔

#define kStartTime CFAbsoluteTime start = CFAbsoluteTimeGetCurrent();

#define kEndTime NSLog(@"Time: %f", CFAbsoluteTimeGetCurrent() - start)

宏(指令)定义

#ifndef MacroDefinition_h // 如果没定义

#define MacroDefinition_h

获取设备尺寸大小

NavBar高度

#define NavigationBar_HEIGHT 44

获取屏幕 宽度、高度

#define SCREEN_WIDTH ([UIScreen mainScreen].bounds.size.width)

#define SCREEN_HEIGHT ([UIScreen mainScreen].bounds.size.height)

打印日志

DEBUG 模式下打印日志,当前行

#ifdef DEBUG

# define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);

#else

# define DLog(...)

#endif

重写NSLog,Debug模式下打印日志和当前行数

#if DEBUG

#define NSLog(FORMAT, ...) fprintf(stderr,"\nfunction:%s line:%d content:%s\n", __FUNCTION__, __LINE__, [NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);

#else

#define NSLog(FORMAT, ...) nil

#endif

DEBUG 模式下打印日志,当前行 并弹出一个警告

#ifdef DEBUG

# define ULog(fmt, ...) { UIAlertView *alert = [UIAlertView alloc] initWithTitle:[NSString stringWithFormat:

@"%s\n [Line %d] ", __PRETTY_FUNCTION__, __LINE__] message:[NSString stringWithFormat:fmt, ##__VA_ARGS__]

delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil]; [alert show]; }

#else

# define ULog(...)

#endif

#define ITTDEBUG

#define ITTLOGLEVEL_INFO 10

#define ITTLOGLEVEL_WARNING 3

#define ITTLOGLEVEL_ERROR 1

#ifndef ITTMAXLOGLEVEL

#ifdef DEBUG

#define ITTMAXLOGLEVEL ITTLOGLEVEL_INFO

#else

#define ITTMAXLOGLEVEL ITTLOGLEVEL_ERROR

#endif

#endif

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

打印当前方法的名称

#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

#ifdef ITTDEBUG

#define ITTDCONDITIONLOG(condition, xx, ...) { if ((condition)) { \

ITTDPRINT(xx, ##__VA_ARGS__); \

} \

} ((void)0)

#else

#define ITTDCONDITIONLOG(condition, xx, ...) ((void)0)

#endif

#define ITTAssert(condition, ...) \

do { \

if (!(condition)) { \

[NSAssertionHandler currentHandler] \

handleFailureInFunction:[NSString stringWithUTF8String:__PRETTY_FUNCTION__] \

file:[NSString stringWithUTF8String:__FILE__] \

lineNumber:__LINE__ \

description:__VA_ARGS__]; \

} \

} while(0)

系统

是否iPad

#define isPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)

是否iPad

#define someThing (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)? ipad: iphone

获取系统版本

#define IOS_VERSION [[UIDevice currentDevice] systemVersion] floatValue]

#define CurrentSystemVersion [UIDevice currentDevice] systemVersion]

获取当前语言

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网