zoukankan      html  css  js  c++  java
  • 宏定义在很多方面都会使用,例如定义高度、判断iOS系统、工具类,还有诸如文件路径、服务端api接口文档。为了对宏能够快速定位和了解其功能,我们最好在定义的时候将其放入特定的头文件中,其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率,又能减少系统开销。

    创建宏文件并引入

    因为在 Xcode6以后新建项目的时候不会自动创建 pch 文件了. 那么我们如果想使用全局的宏就要自行创建一个 pch 宏文件, 然后再自行引入

    • Command+N,打开新建文件窗口:ios->other->PCH file,创建一个pch文件:“projectname-Prefix.pch”
    • 将building setting中的precompile header选项的路径添加“$(SRCROOT)/项目名称/pch文件名”(例如:$(SRCROOT)/Project/PrefixHeader.pch)
    • 将Precompile Prefix Header为YES,预编译后的pch文件会被缓存起来,可以提高编译速度
    • 编译一下程序,如果有错误检查一下添加的路径是否正确。

    定义尺寸类的宏

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    //状态栏高度
    #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

    定义沙盒目录文件的宏

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    //文件目录
    #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

    工具类的宏

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    // 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]
    // 获取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 BACKGROUND_COLOR [UIColor colorWithRed:242.0/255.0 green:236.0/255.0 blue:231.0/255.0 alpha:1.0]
    //清除背景色
    #define CLEARCOLOR [UIColor clearColor]


    #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]]
    //判断是真机还是模拟器
    #if TARGET_OS_IPHONE
    //iPhone Device
    #endif
    #if TARGET_IPHONE_SIMULATOR
    //iPhone Simulator
    #endif
    //定义UIImage对象
    #define IMAGE(A) [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:A ofType:nil]]
    //定义UIImage对象
    #define ImageNamed(_pointer) [UIImage imageNamed:_pointer]
    //可拉伸的图片
    #define ResizableImage(name,top,left,bottom,right) [[UIImage imageNamed:name] resizableImageWithCapInsets:UIEdgeInsetsMake(top,left,bottom,right)]
    #define ResizableImageWithMode(name,top,left,bottom,right,mode) [[UIImage imageNamed:name] resizableImageWithCapInsets:UIEdgeInsetsMake(top,left,bottom,right) resizingMode:mode]
    //方正黑体简体字体定义
    #define FONT(F) [UIFont fontWithName:@"FZHTJW--GB1-0" size:F]

    通知Notification相关的宏

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    //系统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接口的宏

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    //接口名称相关

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

    这些只是宏的基本用法,了解更多请点击

  • 相关阅读:
    jdk环境一键配置
    IIS 浏览aspx页面出现 无法显示 XML 页
    ASP.NET MVC(三)
    ASP.NET MVC(二)
    ASP.NET MVC (一)
    Fatal error: Call to a member function bind_param() on a non-object in
    Eclipse字符集设置方式
    mysql 管理工具
    win7 IIS发布项目遇到的问题
    php 环境的搭建
  • 原文地址:https://www.cnblogs.com/SensenCoder/p/5134621.html
Copyright © 2011-2022 走看看