• iOS 常用宏设置


    #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是星期的缩写。

     

     

  • 相关阅读:
    关于UltraISO打开iso文件后只有部分文件问题
    CollectionViewController 集合视图
    SDWebImage, 关于第三方异步加载图片的一些方法
    NSFileManager(文件管理类)
    UIReview(UI总结)
    sqlite( 轻量级数据库)
    DataPersistence(数据持久化: 文件读写, NSUserDefault, 归档)
    第三方(SDWebImage, 网络类AFNetWorking)
    网络编程(GET, POST)
    数据解析(SAX, JSON)
  • 原文地址:https://www.cnblogs.com/wuwangchuxin/p/3672702.html
Copyright © 2020-2023  润新知