赞
踩
宏定义在很多方面都会使用,例如定义高度、判断iOS系统、工具类,还有诸如文件路径、服务端api接口文档。为了对宏能够快速定位和了解其功能,我们最好在定义的时候将其放入特定的头文件中,下面我抛砖引玉,对一些常用的宏进行分类、分文件定义,希望对大家有所帮助。
定义尺寸类的宏
- DimensMacros.h
- //状态栏高度
- #define STATUS_BAR_HEIGHT 20
- //NavBar高度
- #define NAVIGATION_BAR_HEIGHT 44
- //状态栏 + 导航栏 高度
- #define STATUS_AND_NAVIGATION_HEIGHT ((STATUS_BAR_HEIGHT) + (NAVIGATION_BAR_HEIGHT))
-
- //屏幕 rect
- #define SCREEN_RECT ([UIScreen mainScreen].bounds)
-
- #define SCREEN_WIDTH ([UIScreen mainScreen].bounds.size.width)
-
- #define SCREEN_HEIGHT ([UIScreen mainScreen].bounds.size.height)
-
- #define CONTENT_HEIGHT (SCREEN_HEIGHT - NAVIGATION_BAR_HEIGHT - STATUS_BAR_HEIGHT)
-
- //屏幕分辨率
- #define SCREEN_RESOLUTION (SCREEN_WIDTH * SCREEN_HEIGHT * ([UIScreen mainScreen].scale))
-
-
- //广告栏高度
- #define BANNER_HEIGHT 215
-
- #define STYLEPAGE_HEIGHT 21
-
- #define SMALLTV_HEIGHT 77
-
- #define SMALLTV_WIDTH 110
-
- #define FOLLOW_HEIGHT 220
-
- #define SUBCHANNEL_HEIGHT 62

2.定义沙盒目录文件的宏
- PathMacros.h
- //文件目录
- #define kPathTemp NSTemporaryDirectory()
- #define kPathDocument [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]
- #define kPathCache [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0]
- #define kPathSearch [kPathDocument stringByAppendingPathComponent:@"Search.plist"]
-
- #define kPathMagazine [kPathDocument stringByAppendingPathComponent:@"Magazine"]
- #define kPathDownloadedMgzs [kPathMagazine stringByAppendingPathComponent:@"DownloadedMgz.plist"]
- #define kPathDownloadURLs [kPathMagazine stringByAppendingPathComponent:@"DownloadURLs.plist"]
- #define kPathOperation [kPathMagazine stringByAppendingPathComponent:@"Operation.plist"]
-
- #define kPathSplashScreen [kPathCache stringByAppendingPathComponent:@"splashScreen"]
- #endif
3.工具类的宏
- UtilsMacros.h
- //Log utils marco
-
- #define ALog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
-
- #ifdef DEBUG
- #define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
- #else
- #define DLog(...)
- #endif
-
- #ifdef DEBUG
- #define ULog(...)
- //#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
-
-
- //System version utils
-
- #define SYSTEM_VERSION_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame)
- #define SYSTEM_VERSION_GREATER_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending)
- #define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
- #define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
- #define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending)
-
-
- // 获取RGB颜色
- #define RGBA(r,g,b,a) [UIColor colorWithRed:r/255.0f green:g/255.0f blue:b/255.0f alpha:a]
- #define RGB(r,g,b) RGBA(r,g,b,1.0f)
-
-
- #define IsPortrait ([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortrait || [UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortraitUpsideDown)
-
-
- #define IsNilOrNull(_ref) (((_ref) == nil) || ([(_ref) isEqual:[NSNull null]]))
-
-
- //角度转弧度
- #define DEGREES_TO_RADIANS(d) (d * M_PI / 180)
-
- //大于等于7.0的ios版本
- #define iOS7_OR_LATER SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")
-
- //大于等于8.0的ios版本
- #define iOS8_OR_LATER SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0")
-
- //iOS6时,导航VC中view的起始高度
- #define YH_HEIGHT (iOS7_OR_LATER ? 64:0)
-
- //获取系统时间戳
- #define getCurentTime [NSString stringWithFormat:@"%ld", (long)[[NSDate date] timeIntervalSince1970]]

4.通知Notification相关的宏
- NotificationMacros.h
- //系统Notification定义
-
- #define TNCancelFavoriteProductNotification @"TNCancelFavoriteProductNotification" //取消收藏时
- #define TNMarkFavoriteProductNotification @"TNMarkFavoriteProductNotification" //标记收藏时
-
- #define kNotficationDownloadProgressChanged @"kNotficationDownloadProgressChanged" //下载进度变化
- #define kNotificationPauseDownload @"kNotificationPauseDownload" //暂停下载
- #define kNotificationStartDownload @"kNotificationStartDownload" //开始下载
-
- #define kNotificationDownloadSuccess @"kNotificationDownloadSuccess" //下载成功
- #define kNotificationDownloadFailed @"kNotificationDownloadFailed" //下载失败
- #define kNotificationDownloadNewMagazine @"kNotificationDownloadNewMagazine"
服务端API接口的宏
- APIStringMacros.h
- //
- //接口名称相关
-
- #ifdef DEBUG
- //Debug状态下的测试API
- #define API_BASE_URL_STRING @"http://boys.test.companydomain.com/api/"
-
- #else
- //Release状态下的线上API
- #define API_BASE_URL_STRING @"http://www.companydomain.com/api/"
-
- #endif
-
- //接口
- #define GET_CONTENT_DETAIL @"channel/getContentDetail" //获取内容详情(含上一个和下一个)
-
- #define GET_COMMENT_LIST @"comment/getCommentList" //获取评论列表
-
- #define COMMENT_LOGIN @"comment/login" //获取评论列表
-
- #define COMMENT_PUBLISH @"comment/publish" //发布评论
-
- #define COMMENT_DELETE @"comment/delComment" //删除评论
-
- #define LOGINOUT @"common/logout" //登出

还有很多其他类型的宏,此处不一一列举
创建一个import所有宏相关的文件Macros.h
- Macros.h
- #import "UtilsMacros.h"
- #import "APIStringMacros.h"
- #import "DimensMacros.h"
- #import "NotificationMacros.h"
- #import "SharePlatformMacros.h"
- #import "StringMacros.h"
- #import "UserBehaviorMacros.h"
- #import "PathMacros.h"
在xcode项目的pch文件中,导入Macros.h文件
- XcodeProjectName-Prefix.pch
- #ifdef __OBJC__
- #import <UIKit/UIKit.h>
- #import <Foundation/Foundation.h>
- #import "Macros.h"
- #endif
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。