概述
#ifndef __IPHONE_5_0 #warning "This project uses features only available in iOS SDK 5.0 and later." #endif #ifdef __OBJC__ #import <UIKit/UIKit.h> #import <Foundation/Foundation.h> // 1.日志开关 #ifdef DEBUG #define CXLog(...) NSLog(__VA_ARGS__) #else #define CXLog(...) #endif // 2.判断是否为iOS7 #define iOS7 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) // 3.获得颜色 #define CXColor(r, g, b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1] // 4.加载JSON对象 #define CXJson(name) [NSJSONSerialization JSONObjectWithData:[NSData dataWithContentsOfURL:[[NSBundle mainBundle] URLForResource:@#name withExtension:nil]] options:NSJSONReadingAllowFragments error:nil] // 5.全局背景色 #define CXGlobalBg [UIColor colorWithPatternImage:[UIImage imageNamed:@"bg"]]
// 6.判断是否为4inch #define is4inch ([UIScreen mainScreen].bounds.size.height == 568.0) #endif #define EMOTION_CACHE_PATH @"cachedemotions" #define EMOTION_RECENT_USED @"recentusedemotions" #define EMOTION_CATEGORIES @"categoryemotions" #define EMOTION_TOPICS @"emotiontopics" // 收藏相关 #define COLLECT_CACHE_PATH @"collected" // 配图相关 #define WATERFALL_ITEM_HEIGHT_MAX 300 #define WATERFALL_ITEM_WIDTH 146
1、release时,屏蔽log
#if defined (DEBUG) && DEBUG == 1
#else
#define NSLog(...) {};
#endif
2、在主线程或在后台执行block
#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)
3、设备相关
#define isRetina ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 960), [[UIScreen mainScreen] currentMode].size) : NO)
#define iPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO)
#define isPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#define CurrentSystemVersion ([[UIDevice currentDevice] systemVersion])
#define CurrentLanguage ([[NSLocale preferredLanguages] objectAtIndex:0])
4、区分模拟器和真机
#if TARGET_OS_IPHONE
//iPhone Device
#endif
#if TARGET_IPHONE_SIMULATOR
//iPhone Simulator
#endif
5、根据是否使用ARC做不同操作
#if __has_feature(objc_arc)
//compiling with ARC
#else
// compiling without ARC
#endif
#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
宏
符合ANSI的预定义宏:
__DATE__:表示当前源文件编译时的日期,格式为:月/天/年(Mmm dd yyyy)。
__FILE__:表示当前正在处理的源文件名称。
__LINE__:表示当前正在处理的源文件的行,可以用#line指令修改。
__STDC__:表示是ANSI C标准。只有在编译器选项指定了/Za,并且不是编译C++程序时,被定义为常整数1;否则未定义。
__TIME__:表示当前源文件的最近编译时的时间,格式为:小时/分/秒(hh:mm:ss)。
__TIMESTAMP__:表示当前源文件的最近修改日期和时间,格式为:Ddd Mmm dd hh:mm:ss yyyy,其中Ddd是星期的缩写。
转载于:https://www.cnblogs.com/wuwangchuxin/p/3672702.html
最后
以上就是小巧野狼为你收集整理的iOS 常用宏设置的全部内容,希望文章能够帮你解决iOS 常用宏设置所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复