美文网首页
iOS 一些常用的宏定义

iOS 一些常用的宏定义

作者: SamCheck | 来源:发表于2016-05-23 13:47 被阅读191次

    规范

    #ifdef __OBJC__
    /** Objectice-C */ 
    #endif
    
    #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
    

    宏定义

    // 测试方法
    #ifdef DEBUG
      #define LSLog(...) NSLog(__VA_ARGS__)
    #else
      #define LSLog(...)
    #endif
    
    // 测试方法
    #ifdef DEBUG 
    #define DLog( s, ... ) NSLog( @"< %@:(%d) > %@", [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__] ) 
    #else 
    #define DLog( s, ... ) 
    #endif
    
    //随机色
    #define LSRandomColor [UIColor colorWithRed:((float)arc4random_uniform(256) /255.0) green:((float)arc4random_uniform(256) /255.0) blue:((float)arc4random_uniform(256) /255.0) alpha:1.0];
    
    // 颜色(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)]
    
    // 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]
    
    //首次启动判断:
    #define First_Launched @"firstLaunch"
    
    // 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) //NavigationBar的高度
    #define kBottomBarHeight (49.f) //Tabbar的高度
    #define kCellDefaultHeight (44.f) //UITableViewCell 的默认高度
    #define kEnglishKeyboardHeight (216.f)//英语键盘的默认高度
    #define kChineseKeyboardHeight (252.f)//汉语键盘的默认高度
    
    // 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)]
    
    // 当前版本 
    #define FSystemVersion ([[[UIDevice currentDevice] systemVersion] floatValue]) 
    #define DSystemVersion ([[[UIDevice currentDevice] systemVersion] doubleValue]) 
    #define SSystemVersion ([[UIDevice currentDevice] systemVersion])
    //ios7系统判断:
    #define IsIOS7 ([[[UIDevice currentDevice] systemVersion] floatValue] >=7.0 ? YES : NO)
    
    // 当前语言 
    #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)
    
    
    //另一种方式判断版本
    #define IS_OS_5_OR_LATER     ([[[UIDevice currentDevice] systemVersion] compare:@"5.0" options:NSNumericSearch] != NSOrderedAscending) //iPhone5或者更高版本
    #define IS_OS_6_OR_LATER     ([[[UIDevice currentDevice] systemVersion] compare:@"6.0" options:NSNumericSearch] != NSOrderedAscending) //iPhone6或者更高版本
    #define IS_OS_7_OR_LATER     ([[[UIDevice currentDevice] systemVersion] compare:@"7.0" options:NSNumericSearch] != NSOrderedAscending) //iPhone7或者更高版本
    
    // 是否 iPad 
    #define isPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
    
    // 是否是 iPhone
    #define isPhone ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPhone)
    
    // 本地化字符串
    /** 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"]
    
    /** 时间间隔 */ 
    #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))
    
    //判断
    #define IFISNIL(v)                      (v = (v != nil) ? v : @"")
    #define IFISNILFORNUMBER(v)             (v = (v != nil) ? v : [NSNumber numberWithInt:0])
    #define IFISSTR(v)                      (v = ([v isKindOfClass:[NSString class]]) ? v : [NSString stringWithFormat:@"%@",v])
    
    

    系统中自带的宏

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

    系统中宏使用零碎

    CGFloat min=MIN(A,B);//最终的大小取决于B,但是最大不能超过A,如果超过A那么值就等于A。
    CGFloat max=MAX(A,B);
    

    相关文章

      网友评论

          本文标题:iOS 一些常用的宏定义

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