iOS基础知识总结(持续更新...)常用开发工具安装与使用

iOS开发常用宏定义

2018-01-25  本文已影响4人  ZhiMa_Maker

宏定义可以在我们平时的开发中帮助我们更简洁有效的进行编程,以下是我工作中遇到和搜集整理的一些宏定义:

关于UI设置

/*UI颜色的快捷设置/

#define kHEXCOLOR(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]

#define kColorFromRGBA(r, g, b , a) [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:a]

//随即颜色
#define kRandomColor [UIColor colorWithRed:arc4random_uniform(256)/255.0 green:arc4random_uniform(256)/255.0 blue:arc4random_uniform(256)/255.0 alpha:1.0]

//设置RGB颜色/设置RGBA颜色
#define kRGBColor(r, g, b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1.0]

// clear背景颜色
#define LRClearColor [UIColor clearColor]

#define RGBACOLOR(r,g,b,a) [UIColor colorWithRed:(r)/255.0f green:(g)/255.0f blue:(b)/255.0f alpha:(a)]

#define RGBA(r, g, b, a) [UIColor colorWithRed:r/255.0f green:g/255.0f blue:b/255.0f alpha:a]   //返回一个RGBA格式的UIColor对象
#define RGB(r, g, b) RGBA(r, g, b, 1.0f) // 返回一个RGB格式的UIColor对象

//通用颜色
#define kBlackColor         [UIColor blackColor]
#define kDarkGrayColor      [UIColor darkGrayColor]
#define kLightGrayColor     [UIColor lightGrayColor]
#define kWhiteColor         [UIColor whiteColor]
#define kGrayColor          [UIColor grayColor]
#define kRedColor           [UIColor redColor]
#define kGreenColor         [UIColor greenColor]
#define kBlueColor          [UIColor blueColor]
#define kCyanColor          [UIColor cyanColor]
#define kYellowColor        [UIColor yellowColor]
#define kMagentaColor       [UIColor magentaColor]
#define kOrangeColor        [UIColor orangeColor]
#define kPurpleColor        [UIColor purpleColor]
#define kClearColor         [UIColor clearColor]

/**
设置 view 圆角和边框
*/

#define JLViewBorderRadius(View, Radius, Width, Color)\
\
[View.layer setCornerRadius:(Radius)];\
[View.layer setMasksToBounds:YES];\
[View.layer setBorderWidth:(Width)];\
[View.layer setBorderColor:[Color CGColor]]

//由角度转换弧度 由弧度转换角度

#define LRDegreesToRadian(x) (M_PI * (x) / 180.0)
#define LRRadianToDegrees(radian) (radian*180.0)/(M_PI)

//设置(方正黑体简体字体)字体大小

#define FONT(F)  [UIFont systemFontOfSize:F]
//[UIFont fontWithName:@"FZHTJW--GB1-0" size:F]

pragma mark -- 字体大小设置

#define ListTitleFontSize 17
#define ListLargerContentFontSize 14
#define ListContentFontSize 13
#define ListBubttonFontSize 13
#define ListDetailContentFontSize 12
#define CaptionFontSize 15
#define ValueFontSize 12

//获取图片资源

#define JLGetImage(imageName) [UIImage imageNamed:[NSString stringWithFormat:@"%@",imageName]]

pragma mark -- 屏幕大小

#define SCREEN_SIZE   [[UIScreen mainScreen] bounds].size
#define Main_Screen_Height   [[UIScreen mainScreen] bounds].size.height
#define Main_Screen_Width   [[UIScreen mainScreen] bounds].size.width
#define ScreenWidth  CGRectGetWidth([UIScreen mainScreen].bounds)
#define ScreenHeight CGRectGetHeight([UIScreen mainScreen].bounds)
#define Width [UIScreen mainScreen].bounds.size.width/320.0
#define Height [UIScreen mainScreen].bounds.size.height/568.0
#define SizeOfViewOrignX(view) view.bounds.origin.x
#define SizeOfViewOrignY(view) view.bounds.origin.y
#define SizeOfViewSizeWidth(view) view.bounds.size.width
#define SizeOfViewSizeHeight(view) view.bounds.size.height
#define WIDTH(v)           (v).frame.size.width

#define SCREEN_WIDTH                    CGRectGetWidth([UIScreen mainScreen].bounds)
#define SCREEN_HEIGHT                   CGRectGetHeight([UIScreen mainScreen].bounds)


#define NAVIGATION_HEIGHT (CGRectGetHeight([[UIApplication sharedApplication] statusBarFrame]) + CGRectGetHeight(self.navigationController.navigationBar.frame))

#define iPhone6 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(750, 1334), [[UIScreen mainScreen] currentMode].size) : NO)
#define iPhone6P ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242, 2208), [[UIScreen mainScreen] currentMode].size) : NO)
#define iPhone7 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(750, 1334), [[UIScreen mainScreen] currentMode].size) : NO)
#define iPhone7P ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242, 2208), [[UIScreen mainScreen] currentMode].size) : NO)
#define iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO)

//颜色生成图片

+ (UIImage *)imageWithColor:(UIColor *)color {

    //描述一个矩形
    CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);
    //开启图形上下文
    UIGraphicsBeginImageContextWithOptions(rect.size, NO, 0);

    //获得图形上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();

    //使用color演示填充上下文
    CGContextSetFillColorWithColor(ctx, [color CGColor]);

    //渲染上下文
    CGContextFillRect(ctx, rect);

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

    //关闭图形上下文
    UIGraphicsEndImageContext();
    
    return image;
    
}

//根据尺寸和颜色生成图片 可设置透明度

+ (UIImage *) imageWithFrame:(CGRect)frame alphe:(CGFloat)alphe Color:(UIColor *)color{
    frame = CGRectMake(0, 0, frame.size.width, frame.size.height);
    UIGraphicsBeginImageContext(frame.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetFillColorWithColor(context, [color CGColor]);
    CGContextFillRect(context, frame);
    UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return theImage;
}

// 软件更新使用

#define CustomVersion [[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CustomVersion"]integerValue]
#define CFBundleIdentifier [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleIdentifier"]
  #define kApplication        [UIApplication sharedApplication]

  #define kKeyWindow          [UIApplication sharedApplication].keyWindow

  #define kAppDelegate        [UIApplication sharedApplication].delegate

  #define kUserDefaults      [NSUserDefaults standardUserDefaults]

  #define kNotificationCenter [NSNotificationCenter defaultCenter]
  #define kScreenWidth \
  ([[UIScreen mainScreen] respondsToSelector:@selector(nativeBounds)] ? [UIScreen mainScreen].nativeBounds.size.width/[UIScreen mainScreen].nativeScale : [UIScreen mainScreen].bounds.size.width)

  #define kScreenHeight \
  ([[UIScreen mainScreen] respondsToSelector:@selector(nativeBounds)] ? [UIScreen mainScreen].nativeBounds.size.height/[UIScreen mainScreen].nativeScale : [UIScreen mainScreen].bounds.size.height)

  #define kScreenSize \
  ([[UIScreen mainScreen] respondsToSelector:@selector(nativeBounds)] ? CGSizeMake([UIScreen mainScreen].nativeBounds.size.width/[UIScreen mainScreen].nativeScale,[UIScreen mainScreen].nativeBounds.size.height/[UIScreen mainScreen].nativeScale) : [UIScreen mainScreen].bounds.size)
字符串是否为空

  #define kStringIsEmpty(str) ([str isKindOfClass:[NSNull class]] || str == nil || [str length] < 1 ? YES : NO )
数组是否为空

  #define kArrayIsEmpty(array) (array == nil || [array isKindOfClass:[NSNull class]] || array.count == 0)
字典是否为空

  #define kDictIsEmpty(dic) (dic == nil || [dic isKindOfClass:[NSNull class]] || dic.allKeys == 0)
APP版本号

  #define kAppVersion [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]
系统版本号

  #define kSystemVersion [[UIDevice currentDevice] systemVersion]
获取当前语言
  #define kCurrentLanguage ([[NSLocale preferredLanguages] objectAtIndex:0])
判断是否为iPhone

  #define kISiPhone (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
  
  判断是否为iPad

  #define kISiPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
获取沙盒Document路径

  #define kDocumentPath [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]
获取沙盒temp路径

  #define kTempPath NSTemporaryDirectory()
获取沙盒Cache路径

  #define kCachePath [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject]

//开发的时候打印,但是发布的时候不打印的NSLog

  #ifdef DEBUG
  #define NSLog(...) NSLog(@"%s 第%d行 \n %@\n\n",__func__,__LINE__,[NSString stringWithFormat:__VA_ARGS__])
  #else
   #define NSLog(...)
   #endif

//pragma mark -- 引用

#define STWeakSelf __weak typeof(self) weakSelf = self; // 弱引用
#define LRWeakSelf(type)  __weak typeof(type) weak##type = type; //弱引用
#define LRStrongSelf(type)  __strong typeof(type) strong##type = weak##type;   //强引用

//pragma mark -- 方法

#ifdef DEBUG
#define MyLog(...)  NSLog(__VA_ARGS__)
#else
#define MyLog(...)
#endif

//判断字符串是否为空

+ (BOOL)isNullOrEmpty:(NSString *)string
{
    if (string == nil || string == NULL) {
        return YES;
    }
    if ([string isKindOfClass:[NSNull class]]) {
        return YES;
    }
    if ([[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length]==0) {
        return YES;
    }
    return NO;
}
+ (NSString *) convertStringValue:(NSString *)string
{
    if (string == nil || string == NULL) {
        return @"";
    }
    if ([string isKindOfClass:[NSNull class]]) {
        return @"";
    }
    return string;
}

宏定义一个单例模式

单例化一个类

  #define SYNTHESIZE_SINGLETON_FOR_CLASS(classname) \
  \
  static classname *shared##classname = nil; \
  \

  + (classname *)shared##classname \
  { \

  @synchronized(self) \
  { \

  if (shared##classname == nil) \
  { \

  shared##classname = [self alloc] init]; \
  } \

  } \
  \

  return shared##classname; \
  } \
  \

  + (id)allocWithZone:(NSZone *)zone \
  { \

  @synchronized(self) \
  { \

  if (shared##classname == nil) \
  { \

  shared##classname = [super allocWithZone:zone]; \
  return shared##classname; \
  } \
  } \
  \

  return nil; \
  } \
  \
  - (id)copyWithZone:(NSZone *)zone \
  { \

  return self; \
  }

  #endif
//获取当前版本号
NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];  
   CFShow(infoDictionary);  
  // app名称  
   NSString *app_Name = [infoDictionary objectForKey:@"CFBundleDisplayName"];  
   // app版本  
   NSString *app_Version = [infoDictionary objectForKey:@"CFBundleShortVersionString"];  
   // app build版本  
   NSString *app_build = [infoDictionary objectForKey:@"CFBundleVersion"];  
    //手机序列号  

   NSString* identifierNumber = [[UIDevice currentDevice] uniqueIdentifier];  
    NSLog(@"手机序列号: %@",identifierNumber); 
    
    //手机别名:
    用户定义的名称  
    NSString* userPhoneName = [[UIDevice currentDevice] name];  
    NSLog(@"手机别名: %@", userPhoneName);  
    //设备名称  
    NSString* deviceName = [[UIDevice currentDevice] systemName];  
    NSLog(@"设备名称: %@",deviceName );  
    //手机系统版本  
    NSString* phoneVersion = [[UIDevice currentDevice] systemVersion];  
    NSLog(@"手机系统版本: %@", phoneVersion);  
    //手机型号  
    NSString* phoneModel = [[UIDevice currentDevice] model];  
    NSLog(@"手机型号: %@",phoneModel );  
    //地方型号  (国际化区域名称)  
    NSString* localPhoneModel = [[UIDevice currentDevice] localizedModel];  
    NSLog(@"国际化区域名称: %@",localPhoneModel );  
      
    NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];  
    // 当前应用名称  
    NSString *appCurName = [infoDictionary objectForKey:@"CFBundleDisplayName"];  
    NSLog(@"当前应用名称:%@",appCurName);  
    // 当前应用软件版本  比如:1.0.1  
    NSString *appCurVersion = [infoDictionary objectForKey:@"CFBundleShortVersionString"];  
    NSLog(@"当前应用软件版本:%@",appCurVersion);  
    // 当前应用版本号码   int类型  
    NSString *appCurVersionNum = [infoDictionary objectForKey:@"CFBundleVersion"];  
    NSLog(@"当前应用版本号码:%@",appCurVersionNum); 
上一篇 下一篇

猜你喜欢

热点阅读