美文网首页iOS接下来要研究的知识点
就自己整的这些iOS小代码感觉有点意思

就自己整的这些iOS小代码感觉有点意思

作者: 辛乐 | 来源:发表于2018-05-25 10:17 被阅读56次

平时项目中需要封装的一些方法,集网上众友之力方便你我,知识在于分享~~共同进步

1.#pragma mark -一个字符串多种颜色,字体
+ (NSAttributedString *) setStringsArr:(NSArray<NSString *> *) stringsArr ColorsArr:(NSArray<UIColor *> *) colorsArr FontsArr:(NSArray <UIFont *> *) fontsArr{
    
    NSString *string = @"";//目标字段
    for (NSString *str in stringsArr) {
        string = [NSString stringWithFormat:@"%@%@",string,str];
    }
    
    
    NSMutableAttributedString *mutaString = [[NSMutableAttributedString alloc] initWithString:string];
    for (int i = 0; i < stringsArr.count; i++) {
        
        CGFloat location = 0;
        for (int j = 0; j < i; j++) {
            NSString *str = stringsArr[j];
            location = location + str.length;
        }
        
        [mutaString addAttributes:@{NSForegroundColorAttributeName:colorsArr[i],
                                    NSFontAttributeName:fontsArr[i]}
                            range:NSMakeRange(location,stringsArr[i].length)];
    }
    
    return mutaString;
}
/**lbl首行缩进*/
+(NSAttributedString *)getAttributedTextWithLbl:(UILabel *)lbl HeadInStr:(NSString *)str{
    
    NSString *_test  = lbl.text;
    NSMutableParagraphStyle *paraStyle01 = [[NSMutableParagraphStyle alloc] init];
    paraStyle01.alignment = NSTextAlignmentLeft;  //对齐
    paraStyle01.headIndent = 0.0f;//行首缩进
    //参数:(字体大小17号字乘以2,34f即首行空出两个字符)
    CGFloat emptylen = lbl.font.pointSize * str.length + 10;
    paraStyle01.firstLineHeadIndent = emptylen;//首行缩进
    paraStyle01.tailIndent = 0.0f;//行尾缩进
    paraStyle01.lineSpacing = SCREENWIDTH / 750 * 7;
    NSAttributedString *attrText = [[NSAttributedString alloc] initWithString:_test attributes:@{NSParagraphStyleAttributeName:paraStyle01}];
    
    return attrText;
}
//获取响应者
+(UIViewController *)getResponderWithObj:(UIView *) view{
    
    UIResponder *responder = view.nextResponder;
    while (1) {
        if (![responder isKindOfClass:[UIViewController class]]) {
            responder = responder.nextResponder;
        }else{
            break;
        }
    }
    UIViewController *vc = (UIViewController *)responder;
    return vc;
}
#pragma mark -- 字典key排序后的字符串
+(NSString*)stringWithDict:(NSDictionary*)dict{
    
    NSArray*keys = [dict allKeys];
    NSArray*sortedArray = [keys sortedArrayUsingComparator:^NSComparisonResult(id obj1,id obj2) {
        return[obj1 compare:obj2 options:NSNumericSearch];
    }];
    
    NSString*str =@"";
    for(NSString*categoryId in sortedArray) {
        
        id value = [dict objectForKey:categoryId];
        if([value isKindOfClass:[NSDictionary class]]) {
            value = [self stringWithDict:value];
        }
        if([str length] !=0) {
            str = [str stringByAppendingString:@"&"];
        }
        
        if ([value isKindOfClass:[NSString class]]) {
            str = [str stringByAppendingFormat:@"%@=%@",[self utf8StrWithStr:categoryId],[self utf8StrWithStr:value]];
        }else{
            
            //暂时数值型
            str = [str stringByAppendingFormat:@"%@=%@",[self utf8StrWithStr:categoryId],value];
        }
        
        
    }
    return str;
}
#pragma mark -- 得到utf8字符串
+(NSString*)utf8StrWithStr:(NSString *)str{
    str = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL,(CFStringRef)str,NULL,(CFStringRef)@"!*'():;@&=+$,/?%#[]",kCFStringEncodingUTF8 ));
    return str;
}
#pragma mark -- 长截图功能
+(UIImage *)screenLongShotWithScrollView:(UIScrollView *) scrolledView{
    UIImage* image = nil;
    UIGraphicsBeginImageContextWithOptions(scrolledView.contentSize, YES, 0.0);
    
    //保存collectionView当前的偏移量
    CGPoint savedContentOffset = scrolledView.contentOffset;
    CGRect saveFrame = scrolledView.frame;
    
    //将collectionView的偏移量设置为(0,0)
    scrolledView.contentOffset = CGPointZero;
    scrolledView.frame = CGRectMake(0, 0, scrolledView.contentSize.width, scrolledView.contentSize.height);
    
    //在当前上下文中渲染出collectionView
    [scrolledView.layer renderInContext: UIGraphicsGetCurrentContext()];
    //截取当前上下文生成Image
    image = UIGraphicsGetImageFromCurrentImageContext();
    
    //恢复collectionView的偏移量
    scrolledView.contentOffset = savedContentOffset;
    scrolledView.frame = saveFrame;
    
    UIGraphicsEndImageContext();
    
    if (image != nil) {
        return image;
    }else {
        return nil;
    }
}
+(UIImage *)screenLongShotWithView:(UIView *) view{
    UIImage* image = nil;
    UIGraphicsBeginImageContextWithOptions(view.bounds.size, YES, 0.0);
    //在当前上下文中渲染出collectionView
    [view.layer renderInContext: UIGraphicsGetCurrentContext()];
    //截取当前上下文生成Image
    image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    
    if (image != nil) {
        return image;
    }else {
        return nil;
    }
}
+(UIImage *)screenLongShotWithView:(UIView *) view Size:(CGSize) size{
    UIImage* image = nil;
    UIGraphicsBeginImageContextWithOptions(size, YES, 0.0);
    //在当前上下文中渲染出collectionView
    [view.layer renderInContext: UIGraphicsGetCurrentContext()];
    //截取当前上下文生成Image
    image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    
    if (image != nil) {
        return image;
    }else {
        return nil;
    }
}
//图片拼接
+(UIImage *)addSlaveImage:(UIImage *)slaveImage toMasterImage:(UIImage *)masterImage {
    
    /**
     masterImage  主图片,生成的图片的宽度为masterImage的宽度
     *slaveImage   从图片,拼接在masterImage的下面
     */
    CGSize size;
    size.width = masterImage.size.width;
    size.height = masterImage.size.height + slaveImage.size.height;
    UIGraphicsBeginImageContextWithOptions(size, YES, 0.0);
    //Draw masterImage
    [masterImage drawInRect:CGRectMake(0, 0, masterImage.size.width, masterImage.size.height)];
    //Draw slaveImage
    [slaveImage drawInRect:CGRectMake(0, masterImage.size.height, masterImage.size.width, slaveImage.size.height)];
    UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return resultImage;
}
//十六进制字符串转颜色
+(UIColor *)getColorByStr:(NSString *)str{
    
    if (str == nil) {
        return HEX_COLOR(0x9ea1a2);//默认值
    }
    str = [str stringByReplacingOccurrencesOfString:@"#" withString:@"0x"];
    //strtoul如果传入的字符开头是“0x”,那么第三个参数是0,也是会转为十六进制的,这样写也可以:
    unsigned long lColor = strtoul([str UTF8String],0,0);
    UIColor *color = HEX_COLOR(lColor);
    return color;
}

//导航栏透明

 self.navigationController.navigationBar.translucent = YES;
    [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:(UIBarMetricsDefault)];

相关文章

网友评论

    本文标题:就自己整的这些iOS小代码感觉有点意思

    本文链接:https://www.haomeiwen.com/subject/cndyjftx.html