一些常用工具拓展

    xiaoxiao2021-12-13  20

    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:dic context: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:color range:range];

            [mutableAttributedStr addAttribute:NSFontAttributeNamevalue:font range:range];

        }

        return mutableAttributedStr;

    }

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

        return [selfsetAllText:allStr andSpcifiStr: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:@"x",outputBuffer[count]];

        }

        returnSAFE_AUTORELEASE(outputString);

    }

    转载请注明原文地址: https://ju.6miu.com/read-950297.html

    最新回复(0)