zoukankan      html  css  js  c++  java
  • IOS快速开发之常量定义

    ---恢复内容开始---

    在IOS开发中,有一些方法常常需要用的,但是有很长的方法名,这造成了代码长,写起来累,我们可以通过宏定义了解决这些问题

    比如说在代码布局的时候会遇上这样的问题,我们要获取上面一个的Y轴坐标,
    有两种方法

    通过坐标加上高度来计算

    xx.frame.origin.y+xx.frame.size.height
    

    还有一个略微简便的方法

    CGRectGetMaxY(xx.frame)
    

    都挺麻烦的,这时候就需要祭出宏定义来帮忙

    #define MaxY(v)            CGRectGetMaxY((v).frame) //纵坐标加上控件的高度
    

    通过这样的定义,下次我们获取Y坐标的时候只要轻轻的写上MaxY(xx)即可,是不是简单很多呢?

    类似的还有加载图片的方法

    #define IMAGENAMED(NAME)       [UIImage imageNamed:NAME]
    

    这样就非常的方便,

    下面是我整理的一个类

    #ifndef Medical_Wisdom_UConstants_h
    #define Medical_Wisdom_UConstants_h
    
    /******************************************************/
    
    /****  debug log **/ //NSLog输出信息
    
    #ifdef DEBUG
    
    #define DLog( s, ... ) NSLog( @"< %@:(%d) > %@", [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__] )
    
    #else
    
    #define DLog( s, ... )
    
    #endif
    
    
    /***  DEBUG RELEASE  */
    
    #if DEBUG
    
    #define MCRelease(x)
    
    #else
    
    #define MCRelease(x)
    
    #endif
    
    /*****  release   *****/
    #define NILRelease [x release], x = nil
    
    #pragma mark - Frame(宏 x,y,width,height)
    
    #define MainScreenScale [[UIScreen mainScreen]scale] //屏幕的分辨率 当结果为1时,显示的是普通屏幕,结果为2时,显示的是Retian屏幕
    // App Frame Height&Width
    #define Application_Frame  [[UIScreen mainScreen] applicationFrame] //除去信号区的屏幕的frame
    #define APP_Frame_Height   [[UIScreen mainScreen] applicationFrame].size.height //应用程序的屏幕高度
    #define App_Frame_Width    [[UIScreen mainScreen] applicationFrame].size.width  //应用程序的屏幕宽度
    /*** MainScreen Height Width */
    
    #define Main_Screen_Width  [[UIScreen mainScreen] bounds].size.width  //主屏幕的宽度
    #define Main_Screen_Height [[UIScreen mainScreen] bounds].size.height //主屏幕的高度
    #define Main_Screen_Height_without_top [[UIScreen mainScreen] bounds].size.height-64 //主屏幕的高度
    
    
    
    // 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) // 获得控件屏幕的x坐标
    #define MinY(v)            CGRectGetMinY((v).frame) // 获得控件屏幕的Y坐标
    
    #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 CONTRLOS_FRAME(x,y,width,height)     CGRectMake(x,y,width,height)
    
    //    系统控件的默认高度
    #define kStatusBarHeight   (20.f)
    #define kTopBarHeight      (44.f)
    #define kBottomBarHeight   (49.f)
    
    #define kCellDefaultHeight (44.f)
    
    #define KstatusBarAndNavigation (64.0)
    // 当控件为全屏时的横纵左边
    #define kFrameX             (0.0)
    #define kFrameY             (0.0)
    
    
    #define kPhoneWithStatusNoPhone5Height   (480.0)
    #define kPhoneNoWithStatusNoPhone5Height (460.0)
    #define kPhoneWithStatusPhone5Height     (568.0)
    #define kPhoneNoWithStatusPhone5Height   (548.0)
    
    #define kPadFrameWidth                   (768.0)
    #define kPadWithStatusHeight             (1024.0)
    #define kPadNoWithStatusHeight           (1004.0)
    
    //中英状态下键盘的高度
    #define kEnglishKeyboardHeight  (216.f)
    #define kChineseKeyboardHeight  (252.f)
    
    #pragma mark - Funtion Method (宏 方法)
    //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)]
    
    //颜色(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)]
    
    #define BACKGROUND_COLOR         [UIColor colorWithRed:22/255.0f green:29/255.0f blue:38/255.0f alpha:1]
    //当前版本
    #define FSystenVersion            ([[[UIDevice currentDevice] systemVersion] floatValue])
    #define DSystenVersion            ([[[UIDevice currentDevice] systemVersion] doubleValue])
    #define SSystemVersion            ([[UIDevice currentDevice] systemVersion])
    
    //当前语言
    #define CURRENTLANGUAGE           ([[NSLocale preferredLanguages] objectAtIndex:0])
    
    
    //是否Retina屏
    #define isRetina                  ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 960), [[UIScreen mainScreen] currentMode].size) :NO)
    //是否iPhone5
    #define ISIPHONE                  [[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone
    #define ISIPHONE5                 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO)
    #define ISIPHONE6                 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(750, 1334), [[UIScreen mainScreen] currentMode].size) : NO)
    #define ISIPHONE6P                 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242, 2208), [[UIScreen mainScreen] currentMode].size) : NO)
    
    //是否是iPad
    #define isPad                      (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
    
    
    #define YELLO_APP [UIColor colorWithRed:255/255 green:148.0/255 blue:28.0/255 alpha:1]
    
    // UIView - viewWithTag 通过tag值获得子视图
    #define VIEWWITHTAG(_OBJECT,_TAG)   [_OBJECT viewWithTag : _TAG]
    
    //应用程序的名字
    #define AppDisplayName              [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"]
    
    //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]
    
    //判断设备室真机还是模拟器
    #if TARGET_OS_IPHONE
    /** iPhone Device */
    #endif
    
    #if TARGET_IPHONE_SIMULATOR
    /** iPhone Simulator */
    #endif
    
    #endif
    
    

    这个在开发的时候可以略微的提高效率,OC的语法确实有点烦啊,赶快学swift吧,_

    完整的代码可以在GitHub下载

    ---恢复内容结束---

  • 相关阅读:
    阿里Canal中间件的初步搭建和使用
    深入理解Java String类
    深入理解Java中的String
    Docker 容器数据卷(挂载)
    在docker容器下利用数据卷实现在删除了mysql容器或者镜像的情况下恢复数据
    EFK(Elasticsearch+Filebeat+Kibana)收集容器日志
    Docker 容器日志占用空间过大解决办法
    四种软件架构,看看你属于哪个层次
    Kubernetes 如何只授予某一 Namespace 的访问权限
    Docker实验Docker的网络配置
  • 原文地址:https://www.cnblogs.com/mrchenhao/p/4222996.html
Copyright © 2011-2022 走看看