平时项目中需要封装的一些方法,集网上众友之力方便你我,知识在于分享~~共同进步
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)];
网友评论