Usage and specification of IOS macro definitions

Source: Internet
Author: User
Tags uikit

http://my.oschina.net/leejan97/blog/354904

Macro definitions are used in many ways, such as defining heights, judging iOS systems, tool classes, and documentation such as file paths and server-side API interfaces. In order to the macro can quickly locate and understand its function, we better in the definition of the time to put it into a specific header file, the following I would like to introduce some commonly used macros to classify, sub-file definition, I hope to be helpful.

    1. Define a macro for a dimension class

?
123456789101112131415161718192021222324252627282930313233 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. Define a macro for the sandbox catalog file

?
1234567891011121314 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. Macros for tool classes

?
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 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 of notification related macros

?
12345678910111213 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"

Server-side API interface macros

?
1234567891011121314151617181920212223242526 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"            //登出

There are many other types of macros that are not listed here

Create an import of all macros related files Macros.h

?
123456789 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"

In the PCH file for the Xcode project, import the Macros.h file

?
123456 XcodeProjectName-Prefix.pch#ifdef __OBJC__    #import <UIKit/UIKit.h>    #import <Foundation/Foundation.h>    #import "Macros.h"#endif

Usage and specification of IOS macro definitions

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.