IOS - 常用宏定义和功能方法

可能不定期添加新的东西
github地址:https://github.com/yuqingzhude/CommonUseDemo

/************************Tools************************/

/** 存网络请求参数或者其他类似key value对应的字典*/
@property (nonatomic,strong) NSDictionary *keyValueDic;

+ (instancetype)sharedCommonUse;

/** 获取当前时间*/
+ (NSString *)getCurrentTime;

/** 将日期格式转化成字符串*/
+(NSString*)getFormatedTime:(NSDate*)date;

/** 改变图片大小*/
+(UIImage *)reSizeImage:(UIImage *)image toSize:(CGSize)reSize;

/** 拨打电话*/
+ (void)callSomebody:(NSString *)tel;

/** 字符串是否为数字*/
+ (BOOL)ifThisStringIsAnNumber:(NSString *)str;

/** 字符串是否为整形*/
+ (BOOL)isPureInt:(NSString*)string;

/** 判断是否为浮点形*/
+ (BOOL)isPureFloat:(NSString*)string;

/** 从栈中将要移动vc向前移动index个位置,中间的vc将被释放*/
//ex:pay success pop start vc
+ (void)moveForwardTopVC:(UIViewController *)vc ForwardIndex:(NSInteger)index;

/** pop到指定名字的VC,没有index可能变化的引起的问题*/
+ (void)popToViewControllerWithVC:(UIViewController *)vc toClass:(Class)toClass animated:(BOOL)animated;

/** 传入数据字典&Model名打印出Model Body*/
+(void)createModelWithDictionary:(NSDictionary *)dict modelName:(NSString *)modelName;

/** 计算字符串高度*/
- (float) calculateStrheightWithStr:(NSString *)str Font: (UIFont *)font Width: (float) width;

/** 计算字符串宽度*/
- (float) calculateStrwidthWithStr:(NSString *)str Font: (UIFont *) font;

/** 将一个UIView切成圆形 宽高得相等*/
+ (void)changeViewToCircle:(UIView *)view;

/** collectionView 重新加载数据后计算出高度并更新*/
+ (void)reloadCollectionViewHeight:(UICollectionView *)collectionView;

// Factory

/** 创建btn 基本属性: frame title titleColor backgroundColor*/
+ (UIButton *)createButtonWithFrame:(CGRect)frame Title:(NSString *)title TitleColor:(UIColor *)titleColor BackgroundColor:(UIColor *)backgroundColor;

/** 创建btn 基本属性 + 边框 + 圆角 + 背景图*/
+ (UIButton *)createButtonWithFrame:(CGRect)frame Title:(NSString *)title TitleColor:(UIColor *)titleColor BackgroundColor:(UIColor *)backgroundColor CornerRadius:(CGFloat)cornerRadius BorderWidth:(CGFloat)borderWidth BorderColor:(UIColor *)borderColor ImageName:(NSString *)imageName;

/** 创建label 基本属性 frame text font textColor*/
+ (UILabel *)createLabelWithFrame:(CGRect)frame Text:(NSString *)text Font:(UIFont *) font TextColor:(UIColor *)textColor;

/** 创建label 基本属性 + backgroundColor + textAlinment */
+ (UILabel *)createLabelWithFrame:(CGRect)frame Text:(NSString *)text Font:(UIFont *) font TextColor:(UIColor *)textColor BackgroundColor:(UIColor *)backgroundColor TextAlignment:(NSTextAlignment)textAlinment;

/** 富文本单个keyword*/
+(NSAttributedString *)attributeTextStr:(NSString *)text textColor:(UIColor *)textColor textFont:(UIFont *)textFont  keywordStr:(NSString *)keywordStr keywordColor:(UIColor *)keywordColor keywordFont:(UIFont *)keywordFont;

/** 富文本多个keyword*/
+(NSAttributedString *)attributeTextStr:(NSString *)text textColor:(UIColor *)textColor textFont:(UIFont *)textFont keywordStrArray:(NSArray *)keywordStrArray keywordColor:(UIColor *)keywordColor keywordFont:(UIFont *)keywordFont;


@end

/************************Define************************/

#ifdef DEBUG
#define QZLog(fmt, ...) NSLog((@"owner:QZ  %s  [Line %d] \n " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
#define QZLog(...)
#endif

//判断是真机还是模拟器
#if TARGET_OS_IPHONE
//iPhone Device
#endif

#if TARGET_IPHONE_SIMULATOR
//iPhone Simulator
#endif

#define SYSTEM_VERSION [[[UIDevice currentDevice] systemVersion] floatValue]
#define IS_IOS7 ([[UIDevice currentDevice].systemVersion doubleValue] >= 7.0]

/** RGB颜色*/
#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]
#define COLOR(R, G, B, A) [UIColor colorWithRed:R/255.0 green:G/255.0 blue:B/255.0 alpha:A]

#define DEVICE_HEIGHT  ([[UIScreen mainScreen] bounds].size.height)
#define DEVICE_WIDTH   ([[UIScreen mainScreen] bounds].size.width)
#define SCREEN_HEIGHT  DEVICE_HEIGHT
#define SCREEN_WIDTH   DEVICE_WIDTH
#define NavigationBar_Height 44

/************************适配************************/
#define IS_IPHONEUI   (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
#define IS_IPADUI     (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#define IS_IPHONE4     ((int)DEVICE_HEIGHT%480==0)
#define IS_IPHONE5     ((int)DEVICE_HEIGHT%568==0)
#define IS_IPAD        ((int)DEVICE_HEIGHT%1024==0)
#define IS_IPHONE6      ((int)DEVICE_HEIGHT%667==0)
#define IS_IPHONE6P     ((int)DEVICE_HEIGHT%736==0)
/*
 4    inch 320*568
 4.7  inch 375*667
 5.5  inch 414*736
 */
#define CONVERT_SCALE(x) (x)/2

#define CT_SCALE_X      DEVICE_WIDTH/320.0
#define CT_SCALE_Y      DEVICE_HEIGHT/568.0
// 5  6  比例一致,6p 放大
#define CT6P_SCALE_X      (IS_IPHONE6P?CT_SCALE_X:1)
#define CT6P_SCALE_Y      (IS_IPHONE6P?CT_SCALE_Y:1)
//转化为最低兼容设备尺寸
#define ConvertTo5_W(x) (CONVERT_SCALE(x)*320)/375
#define ConvertTo5_H(x) (CONVERT_SCALE(x)*568)/667

#define CW(x) ConvertTo5_W(x)*CT_SCALE_X
#define CH(x) ConvertTo5_H(x)*CT_SCALE_Y
#define CWFor6P(x) ConvertTo5_W(x)*CT6P_SCALE_X
#define CHFor6P(x) ConvertTo5_H(x)*CT6P_SCALE_Y
/************************适配************************/

工具方法的实现

- (NSDictionary*)keyValueDic
{
    if (!_keyValueDic) {
        NSDictionary *keyValueDic=[[NSDictionary alloc] init];
        keyValueDic = @{
                        @"key1":@"value1",
                        @"key2":@"value2",
                        @"key3":@"value3",
                        };
        _keyValueDic = keyValueDic;
    }
    return _keyValueDic;
}

+(NSString*)getCurrentTime{
    NSDateFormatter *formatter=[[NSDateFormatter alloc]init];
    [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    NSString *dateTime=[formatter stringFromDate:[NSDate date]];
    return dateTime;
}

+(NSString*)getFormatedTime:(NSDate*)date{
    NSDateFormatter *formatter=[[NSDateFormatter alloc]init];
    [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    NSString *dateTime=[formatter stringFromDate:date];
    return dateTime;

}

+(UIImage *)reSizeImage:(UIImage *)image toSize:(CGSize)reSize{
    UIGraphicsBeginImageContext(reSize);
    [image drawInRect:CGRectMake(0, 0, reSize.width, reSize.height)];
    UIImage *reSizeImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return reSizeImage;
}

+(void)callSomebody:(NSString *)tel
{
    NSMutableString * str=[[NSMutableString alloc] initWithFormat:@"tel:%@",tel];
    UIWebView * callWebview = [[UIWebView alloc] init];
    [callWebview loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:str]]];
    [[UIApplication sharedApplication].keyWindow addSubview:callWebview];
}

+ (BOOL)ifThisStringIsAnNumber:(NSString *)str
{
    if ([self isPureInt:str] || [self isPureFloat:str]) {
        return YES;
    }
    return NO;
}

+ (BOOL)isPureInt:(NSString*)string
{
    NSScanner* scan = [NSScanner scannerWithString:string];
    int val;
    return[scan scanInt:&val] && [scan isAtEnd];
}

+ (BOOL)isPureFloat:(NSString*)string
{
    NSScanner* scan = [NSScanner scannerWithString:string];
    float val;
    return[scan scanFloat:&val] && [scan isAtEnd];
}


+(void)moveForwardTopVC:(UIViewController *)vc ForwardIndex:(NSInteger)index
{
    // 直接操作nav的viewControllers栈
    NSMutableArray *stackAry=[NSMutableArray arrayWithArray:vc.navigationController.viewControllers];

    for (NSInteger i=vc.navigationController.viewControllers.count-1; i>=vc.navigationController.viewControllers.count-1-index; i--) {
        if(i<0) return;
        [stackAry removeObjectAtIndex:i];
    }
    [stackAry addObject:vc];
    vc.navigationController.viewControllers=[stackAry copy];
}

+(void)popToViewControllerWithVC:(UIViewController *)vc toClass:(Class)toClass animated:(BOOL)animated
{
    for (UIViewController *controller in vc.navigationController.viewControllers) {
        if ([controller isKindOfClass:toClass]) {
            [vc.navigationController popToViewController:controller animated:animated];
        }
    }
}

+(void)createModelWithDictionary:(NSDictionary *)dict modelName:(NSString *)modelName
{
    printf("\n@interface %s :NSObject\n",modelName.UTF8String);
    for (NSString *key in dict) {
        NSString *type = ([dict[key] isKindOfClass:[NSNumber class]])?@"NSNumber":@"NSString";
        printf("@property (nonatomic,copy) %s *%s;\n",type.UTF8String,key.UTF8String);
    }
    printf("@end\n");

}


- (float) calculateStrheightWithStr:(NSString *)str Font: (UIFont *)font Width: (float) width
{
    CGRect textRect = [str boundingRectWithSize:CGSizeMake(width, MAXFLOAT)
                                         options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading
                                      attributes:@{NSFontAttributeName:font}
                                         context:nil];

    return ceil(textRect.size.height);
}

- (float) calculateStrwidthWithStr:(NSString *)str Font: (UIFont *) font
{
    CGRect textRect = [str boundingRectWithSize:CGSizeMake(MAXFLOAT, font.pointSize)
                                         options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading
                                      attributes:@{NSFontAttributeName:font}
                                         context:nil];

    return ceil(textRect.size.width);
}

+ (void)changeViewToCircle:(UIView *)view
{
    view.layer.cornerRadius = view.bounds.size.width/2.0;
    view.clipsToBounds = YES;
}

+ (void)reloadCollectionViewHeight:(UICollectionView *)collectionView
{
    CGFloat x = collectionView.frame.origin.x;
    CGFloat y = collectionView.frame.origin.y;
    CGFloat width = collectionView.bounds.size.width;
    CGFloat height = collectionView.collectionViewLayout.collectionViewContentSize.height;
    collectionView.frame = CGRectMake(x, y, width, height);
}

+(NSAttributedString *)attributeTextStr:(NSString *)text textColor:(UIColor *)textColor textFont:(UIFont *)textFont  keywordStr:(NSString *)keywordStr keywordColor:(UIColor *)keywordColor keywordFont:(UIFont *)keywordFont
{
    return [CommonUse attributeTextStr:text textColor:textColor textFont:textFont keywordStrArray:keywordStr?@[keywordStr]:nil keywordColor:keywordColor keywordFont:keywordFont];
}

+(NSAttributedString *)attributeTextStr:(NSString *)text textColor:(UIColor *)textColor textFont:(UIFont *)textFont keywordStrArray:(NSArray *)keywordStrArray keywordColor:(UIColor *)keywordColor keywordFont:(UIFont *)keywordFont
{
    NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:text];
    [attr addAttributes:@{NSFontAttributeName:textFont?:[UIFont systemFontOfSize:17],NSForegroundColorAttributeName:textColor?:[UIColor blackColor]} range:NSMakeRange(0, text.length)];
    for (NSString *tempstr in keywordStrArray) {
        [attr addAttributes:@{NSFontAttributeName:keywordFont?:[UIFont systemFontOfSize:17],NSForegroundColorAttributeName:keywordColor?:[UIColor blackColor]} range:[text rangeOfString:tempstr]];
    }
    return attr;
}

/** Button Factory*/
+ (UIButton *)createButtonWithFrame:(CGRect)frame Title:(NSString *)title TitleColor:(UIColor *)titleColor BackgroundColor:(UIColor *)backgroundColor
{
    UIButton *btn = [[UIButton alloc] init];
    btn.frame = frame;
    [btn setTitle:title forState:UIControlStateNormal];
    [btn setTitleColor:titleColor ? : [UIColor whiteColor] forState:UIControlStateNormal];
    btn.backgroundColor = backgroundColor ? :[UIColor whiteColor];
    return btn;
}

+ (UIButton *)createButtonWithFrame:(CGRect)frame Title:(NSString *)title TitleColor:(UIColor *)titleColor BackgroundColor:(UIColor *)backgroundColor CornerRadius:(CGFloat)cornerRadius BorderWidth:(CGFloat)borderWidth BorderColor:(UIColor *)borderColor ImageName:(NSString *)imageName
{
    UIButton *btn = [CommonUse createButtonWithFrame:frame Title:title TitleColor:titleColor BackgroundColor:backgroundColor];
        btn.layer.cornerRadius  = cornerRadius;
    if (borderWidth > 0) {
        btn.layer.borderWidth=borderWidth;
    }
    if (borderColor) {
        btn.layer.borderColor=[borderColor CGColor];
    }
    btn.layer.masksToBounds=YES;
    [btn setImage:[[UIImage imageNamed:imageName] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] forState:UIControlStateNormal];
    return btn;
}

+ (UILabel *)createLabelWithFrame:(CGRect)frame Text:(NSString *)text Font:(UIFont *) font TextColor:(UIColor *)textColor
{
    UILabel *label = [[UILabel alloc] init];
    label.frame = frame;
    label.text = text ? :@"";
    if (font) {
        label.font = font;
    }
    if (textColor) {
        label.textColor = textColor;
    }
    return label;
}

+ (UILabel *)createLabelWithFrame:(CGRect)frame Text:(NSString *)text Font:(UIFont *) font TextColor:(UIColor *)textColor BackgroundColor:(UIColor *)backgroundColor TextAlignment:(NSTextAlignment)textAlinment
{
    UILabel *label = [CommonUse createLabelWithFrame:frame Text:text Font:font TextColor:textColor];
    if (backgroundColor) {
        label.backgroundColor = backgroundColor;
    }
    label.textAlignment = textAlinment;
    return label;
}

 

posted @ 2016-09-23 15:00  brave-sailor  阅读(3554)  评论(0编辑  收藏  举报