宏定义

原创 2015年11月20日 21:41:50
//
//  Macro.h
//  NewTest
//
//  Created by leipu on 15/10/11.
//  Copyright (c) 2015 Leo. All rights reserved.
//

#pragma mark - UI & FILE

/* 检测,是否运行在iOS7.0或更高版本 */
#ifndef NSFoundationVersionNumber_iOS_6_1
#define NSFoundationVersionNumber_iOS_6_1 
993.00
#endif
#define MINIMAL_UI (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_6_1)

/* 检查设备类型 */
#define IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)

/* 控件高度 */
#define NAVIGATION_BAR_HEIGHT               (MINIMAL_UI ? 64.0f : 44.0f)
#define STATUS_BAR_HEIGHT                  
20      // 状态栏
#define TOOLBAR_HEIGHT                      44      // 底部工具栏
#define TABBAR_HEIGHT                       44


#define SCREEN_WIDTH ([UIScreen mainScreen].bounds.size.width)      // 屏幕宽度
#define SCREEN_HEIGHT ([UIScreen mainScreen].bounds.size.height)    // 屏幕高度
#define SCREEN_SCALE ([UIScreen mainScreen].scale)


#define isIos7      ([[[UIDevice currentDevice] systemVersion] floatValue])
#define StatusbarSize ((isIos7 >=
7 && __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_6_1)?20.f:0.f)

// 通过Red, Green, Blue设置颜色值
#define UIColorWithRGBA(r,g,b,a)    [UIColor colorWithRed:(r)/255.0f green:(g)/255.0f blue:(b)/255.0f alpha:(a)]
#define UIColorWithRGB(r,g,b)       UIColorWithRGBA(r, g, b,
1.0)

// 通过16进制数设置颜色值
#define UIColorWithHexA(rgbValue,a) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 \
green:((float)((rgbValue &
0xFF00) >> 8))/255.0 \
blue:((float)(rgbValue &
0xFF))/255.0 \
alpha:(a)]
#define UIColorWithHex(rgbValue)    UIColorWithHexA(rgbValue,
1.0)

// 通过图片设置颜色值
#define UIColorWithTexture(image) [UIColor colorWithPatternImage:[UIImage imageNamed:image]]


#pragma mark - Path

#define kHomePath           NSHomeDirectory()
#define kCachePath          [NSHomeDirectory() stringByAppendingPathComponent:@
"Library/Caches"]
#define kDocumentFolder     [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:
0]
#define kDocumentFolder2    [NSHomeDirectory() stringByAppendingPathComponent:@
"Documents"]
#define kLibraryPath        [NSHomeDirectory() stringByAppendingPathComponent:@
"Library"]
#define kTempPath           NSTemporaryDirectory()
#define kMainBoundPath      [[NSBundle mainBundle] bundlePath]
#define kResourcePath       [[NSBundle mainBundle] resourcePath]
#define kExecutablePath     [[NSBundle mainBundle] executablePath]


#pragma mark - System

#define IOS_VERSION         [[[UIDevice currentDevice] systemVersion] floatValue]
#define APP_VERSION         [[[NSBundle mainBundle] infoDictionary] objectForKey:@
"CFBundleShortVersionString"]
#define BUNDLE_NAME         [[NSBundle mainBundle] objectForInfoDictionaryKey:@
"CFBundleName"]
#define BUNDLE_VERSION      [[NSBundle mainBundle] objectForInfoDictionaryKey:@
"CFBundleVersion"]
#define BUNDLE_ID           [[NSBundle mainBundle] objectForInfoDictionaryKey:@
"CFBundleIdentifier"]

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

#define iPhone6 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(750, 1334), [[UIScreen mainScreen] currentMode].size) : NO)

#define iPhone6Plus ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242, 2208), [[UIScreen mainScreen] currentMode].size) : NO)

#pragma mark - Number

#define DEGREES_TO_RADIANS(x) (M_PI * (x) / 180.0) // 弧度转角度
#define RADIANS_TO_DEGREES(x) (r * 180.0) / (M_PI)  // 角度转弧度

#pragma mark - Log

#ifdef DEBUG     //测试模式
#   define DLog(...) NSLog((@"%s [Line %d] %@"), __PRETTY_FUNCTION__, __LINE__, [NSString stringWithFormat:__VA_ARGS__])
#   define SLog(...) NSLog(__VA_ARGS__)
#else
#   define DLog(...)
#   define SLog(...)
#endif

#pragma mark - String

#define HSStringFromCGSize(size) [NSString stringWithFormat:@"%.0f_%.0f", size.width * SCREEN_SCALE, size.height * SCREEN_SCALE]


C++宏定义需要注意的细节

#define是C语言中提供的宏定义命令,其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率,但如果我们不需要到一些细节,很容易因为这个简单的宏定义引发难以预料的问题 宏...
  • hsd2012
  • hsd2012
  • 2016年03月24日 09:15
  • 1316

Keil宏定义取代函数

#define ledon(i) {\ if (i==50) P1=0;\ else P1=0x21;\ }
  • hehui211
  • hehui211
  • 2012年12月06日 08:43
  • 791

宏定义Debug

#ifdef DEBUG #   define HRLog(fmt, ...) NSLog((@"HRDeBugLog\n    %@\n    %d line\n    %s\n    " fmt...
  • mrSunHR
  • mrSunHR
  • 2016年01月22日 19:53
  • 548

关于类中的宏定义和静态成员

在类声明中,static const int a=14;和static int a;是不一样的,第一个是宏定义,这个是xiangda...
  • erpng
  • erpng
  • 2014年05月26日 21:27
  • 1077

C语言中常见的宏定义笔试/面试题

转载地址:http://blog.163.com/china_2008ay/blog/static/90142252200961971756712/ 写宏定义:得到一个field在结构体(struc...
  • zjuxsl
  • zjuxsl
  • 2015年03月08日 20:12
  • 1669

单例宏定义

// //  QGSingleton.h //  单例联系 // //  Created by 李超群 on 16/6/12. //  Copyright © 2016年 李超群. All ...
  • qq_27074387
  • qq_27074387
  • 2016年06月12日 15:19
  • 281

一些常用的宏定义(很有用,很有效噢)

// 安全释放 #define RELEASE_SAFELY(__Pointer) do{[__Pointer release],__Pointer = nil;} while(0) // 屏幕的物...
  • humingtao2013
  • humingtao2013
  • 2014年06月22日 15:58
  • 2265

__FILE__ __LINE__等几个常用的宏定义

__FILE__ 包含当前程序文件名的字符串 __LINE__  表示当前行号的整数 __DATE__ 包含当前日期的字符串 __STDC__  如果编译器遵循ANSI C标准,它就是个非零值 __T...
  • zhanghaodx082
  • zhanghaodx082
  • 2014年01月04日 15:47
  • 544

宏定义中的选择判断句

#define kViewWidth (isLowIPhone6?(375.0f): iWidthScreen)#define kViewWidth isLowIPhone6?(375.0f): iW...
  • likandmydeer
  • likandmydeer
  • 2015年11月08日 22:51
  • 1601

宏定义注意事项

3.1.3注释优先与预处理展看 #define BSC// BSC tesg 3.14 用define宏定义表达式 #define SEC_A_YEAR (60*60*24*365)UL ...
  • parasoft
  • parasoft
  • 2014年04月29日 17:31
  • 1243
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:宏定义
举报原因:
原因补充:

(最多只允许输入30个字)