一些常用工具拓展

来源:互联网 发布:数据表现手法的作用 编辑:程序博客网 时间:2024/05/17 22:24

NSString.h


/**

 *  设置段落样式

 *

 *  @param lineSpacing 行高

 *  @param textcolor   字体颜色

 *  @param font        字体

 *

 *  @return 富文本

 */

- (NSAttributedString *)stringWithParagraphlineSpeace:(CGFloat)lineSpacing

                                            textColor:(UIColor *)textcolor

                                             textFont:(UIFont *)font;

/**

 *  计算富文本字体高度

 *

 *  @param lineSpeace 行高

 *  @param font       字体

 *  @param width      字体所占宽度

 *

 *  @return 富文本高度

 */

- (CGFloat)getSpaceLabelHeightwithSpeace:(CGFloat)lineSpeace withFont:(UIFont*)font withWidth:(CGFloat)width;

/**

 *  设置在一个文本中所有特殊字符的特殊颜色

 *  @pragma  allStr      所有字符串

 *  @pragma  specifiStr  特殊字符

 *  @pragma  color       默认特殊字符颜色   红色

 *  @pragma  font        默认字体           systemFont 17.号字

 **/

+ (NSMutableAttributedString *)setAllText:(NSString *)allStr andSpcifiStr:(NSString *)specifiStr;

+ (NSMutableAttributedString *)setAllText:(NSString *)allStr andSpcifiStr:(NSString *)specifiStr withColor:(UIColor *)color specifiStrFont:(UIFont *)font;

/**

 *  16位颜色色值处理

 */

+ (UIColor *)colorWithHexString:(NSString *)color alpha:(CGFloat)alpha;

+ (UIColor *)colorWithHexString:(NSString *)color;

//获取有效小数

+ (NSString*)getTheCorrectNum:(NSString*)tempString;

/**

 *  MD5加密

 */

- (NSString *)stringFromMD5;


================================================================================================================================

NSString.m


/**

 *  设置段落样式

 *

 *  @param lineSpacing 行高

 *  @param textcolor   字体颜色

 *  @param font        字体

 *

 *  @return 富文本

 */

- (NSAttributedString *)stringWithParagraphlineSpeace:(CGFloat)lineSpacing

                                           textColor:(UIColor *)textcolor

                                            textFont:(UIFont *)font {

        // 设置段落

    NSMutableParagraphStyle * paragraphStyle = [[NSMutableParagraphStylealloc]init];

    paragraphStyle.lineSpacing = lineSpacing;

        // NSKernAttributeName字体间距

    NSDictionary *attributes =@{NSParagraphStyleAttributeName:paragraphStyle};

    NSMutableAttributedString * attriStr = [[NSMutableAttributedStringalloc]initWithString:selfattributes:attributes];

        // 创建文字属性

    NSDictionary * attriBute =@{NSForegroundColorAttributeName:textcolor,NSFontAttributeName:font};

    [attriStr addAttributes:attriButerange:NSMakeRange(0,self.length)];

    return attriStr;

}

/**

 *  计算富文本字体高度

 *

 *  @param lineSpeace 行高

 *  @param font       字体

 *  @param width      字体所占宽度

 *

 *  @return 富文本高度

 */

- (CGFloat)getSpaceLabelHeightwithSpeace:(CGFloat)lineSpeace withFont:(UIFont*)font withWidth:(CGFloat)width {

    NSMutableParagraphStyle *paraStyle = [[NSMutableParagraphStylealloc]init];

        //    paraStyle.lineBreakMode = NSLineBreakByCharWrapping;

    /** 行高 */

    paraStyle.lineSpacing = lineSpeace;

        // NSKernAttributeName字体间距

    NSDictionary *dic =@{NSFontAttributeName:font,NSParagraphStyleAttributeName:paraStyle};

    CGSize size = [selfboundingRectWithSize:CGSizeMake(width,MAXFLOAT)options:NSStringDrawingUsesLineFragmentOriginattributes:diccontext:nil].size;

    return size.height;

}

#pragma mark -- 设置在一个文本中所有特殊字符的特殊颜色


+ (NSMutableAttributedString *)setAllText:(NSString *)allStr andSpcifiStr:(NSString *)specifiStr withColor:(UIColor *)color specifiStrFont:(UIFont *)font {

    

    NSMutableAttributedString *mutableAttributedStr = [[NSMutableAttributedStringalloc]initWithString:allStr];

    if (color ==nil) {

        color = [UIColorredColor];

    }

    if (font ==nil) {

        font = [UIFontsystemFontOfSize:17.];

    }

        //    NSArray *array = [allStr componentsSeparatedByString:specifiStr];//array.cout-1是所有字符特殊字符出现的次数

    NSRange searchRange =NSMakeRange(0, [allStrlength]);

    NSRange range;

        //拿到所有的相同字符的range

    while ((range = [allStrrangeOfString:specifiStroptions:0range:searchRange]).location !=NSNotFound) {

            //改变多次搜索时searchRange的位置

        searchRange = NSMakeRange(NSMaxRange(range), [allStrlength] -NSMaxRange(range));

            //设置富文本

        [mutableAttributedStr addAttribute:NSForegroundColorAttributeNamevalue:colorrange:range];

        [mutableAttributedStr addAttribute:NSFontAttributeNamevalue:fontrange:range];

    }

    return mutableAttributedStr;

}


+ (NSMutableAttributedString *)setAllText:(NSString *)allStr andSpcifiStr:(NSString *)specifiStr {

    return [selfsetAllText:allStrandSpcifiStr:specifiStr withColor:nilspecifiStrFont:nil];

}


+ (UIColor *)colorWithHexString:(NSString *)color alpha:(CGFloat)alpha {

    //删除字符串中的空格

    NSString *cString = [[colorstringByTrimmingCharactersInSet:[NSCharacterSetwhitespaceAndNewlineCharacterSet]]uppercaseString];

    // String should be 6 or 8 characters

    if ([cStringlength] <6) {

        return [UIColorclearColor];

    }

    // strip 0X if it appears

    //如果是0x开头的,那么截取字符串,字符串从索引为2的位置开始,一直到末尾

    if ([cStringhasPrefix:@"0X"]) {

        cString = [cString substringFromIndex:2];

    }

    //如果是#开头的,那么截取字符串,字符串从索引为1的位置开始,一直到末尾

    if ([cStringhasPrefix:@"#"]) {

        cString = [cString substringFromIndex:1];

    }

    if ([cStringlength] !=6) {

        return [UIColorclearColor];

    }

    

    // Separate into r, g, b substrings

    NSRange range;

    range.location =0;

    range.length =2;

    //r

    NSString *rString = [cStringsubstringWithRange:range];

    //g

    range.location =2;

    NSString *gString = [cStringsubstringWithRange:range];

    //b

    range.location =4;

    NSString *bString = [cStringsubstringWithRange:range];

    

    // Scan values

    unsignedint r, g, b;

    [[NSScannerscannerWithString:rString]scanHexInt:&r];

    [[NSScannerscannerWithString:gString]scanHexInt:&g];

    [[NSScannerscannerWithString:bString]scanHexInt:&b];

    return [UIColorcolorWithRed:((float)r /255.0f) green:((float)g /255.0f)blue:((float)b /255.0f)alpha:alpha];

}


//默认alpha值为1

+ (UIColor *)colorWithHexString:(NSString *)color {

    return [selfcolorWithHexString:coloralpha:1.0f];

}

/*

 * 处理一个数字加小数点的字符串,前面无0,保留两位。网上有循环截取的方法,如果数字过长,浪费内存,这个方法在优化内存的基础上设计的。

 */

 + (NSString*)getTheCorrectNum:(NSString*)tempString {

    //先判断第一位是不是 . , .0

    if ([tempStringhasPrefix:@"."]) {

        tempString = [NSStringstringWithFormat:@"0%@",tempString];

    }

    //计算截取的长度

    NSUInteger endLength = tempString.length;

    //判断字符串是否包含 .

    if ([tempStringcontainsString:@"."]) {

        //取得 .的位置

        NSRange pointRange = [tempStringrangeOfString:@"."];

        //判断 .后面有几位

        NSUInteger f = tempString.length -1 - pointRange.location;

        //如果大于2位就截取字符串保留两位,如果小于两位,直接截取

        if (f >2) {

            endLength = pointRange.location +2;

        }

    }

    //先将tempString转换成char型数组

    NSUInteger start =0;

    constchar *tempChar = [tempStringUTF8String];

    //遍历,去除取得第一位不是0的位置

    for (int i =0; i < tempString.length; i++) {

        if (tempChar[i] =='0') {

            start++;

        }else {

            break;

        }

    }

    //如果第一个字母为 . start后退一位

    if (tempChar[start] =='.') {

        start--;

    }

    //根据最终的开始位置,计算长度,并截取

    NSRange range = {start,endLength - start};

    tempString = [tempString substringWithRange:range];

    return tempString;

}


- (NSString *)stringFromMD5 {

    

    if(self ==nil || [selflength] == 0)

        returnnil;

    

    constchar *value = [selfUTF8String];

    

    unsignedchar outputBuffer[CC_MD5_DIGEST_LENGTH];

    CC_MD5(value, (int)strlen(value), outputBuffer);

    

    NSMutableString *outputString = [[NSMutableStringalloc]initWithCapacity:CC_MD5_DIGEST_LENGTH *2];

    for(NSInteger count =0; count <CC_MD5_DIGEST_LENGTH; count++){

        [outputString appendFormat:@"%02x",outputBuffer[count]];

    }

    returnSAFE_AUTORELEASE(outputString);

}






0 0
原创粉丝点击