关于iOS网络请求tabbart图片显示不正常的问题

来源:互联网 发布:江苏十一选五遗漏数据 编辑:程序博客网 时间:2024/05/08 09:16
最近项目改用网络加载图标以及tabbar的图片  但是tabbar一开始 的图片 显示完全不正常   不仅大小不正常   而且我的图片是彩色的 现在是白和蓝色   网上查了一些资料  原来tabbar会默认图片的颜色  这个时候我们需要使用image的一个设置  使用

imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal 

保证图片不被修改  结果图片会变成这样图片颜色回来了  但是大小还是不正常 捣鼓了一下午 中间修改图片尺寸 甚至自定义tabbar 终于发现问题  需要在图片后边加上@2x或者@3x(网络请求的话可以在存本地的时候将图片名称拼接@2x @3x 具体几倍可以通过后台设置来取
)  不然tabbar会把图片当成@1x的  即图片多大  tabbar的图片就有多大  后来将图片甚至成@2x  图片正常了


2017.4.7更新  鉴于很多人让我贴代码  我还是在这里讲一下  我们要做的就是简单的将网络请求图片数据写入本地  中间出现的唯一问题就是图片没法适应高度  苹果官方文档里tabbar图片尺寸为25x25的  直接让后台给这么大的肯定不行  因为图片会模糊  所以我让后台给 50x50的 我这边名称拼接@2x

 1.获取图片名

NSArray*stringArr =[imageUrlcomponentsSeparatedByString:@"/"];imageUrl为从接口获取的图片URL

NSString*imageName1 = stringArr.lastObject;

 NSArray *arr = [imageName1 componentsSeparatedByString:@"."];  

 NSString *imageName;

if (![arr[0] isEqualToString:@""]) {

        imageName =[NSString stringWithFormat:@"%@@2x.jpg",arr[0]];

}//一般URL就是服务器拼接图片名称 比如:http://pic55.nipic.com/file/20141208/19462408_171130083000_2.jpg,而我们要做的就是获取图片名称19462408_171130083000_2,拼接@2x.jpg然后创建路径(文件夹路径 拼接 图片名称 比如:沙河路径19462408_171130083000_2@2x.jpg),然后将其data写入到该路径下

2.写入到沙盒路径下

 NSData *data = [NSDatadataWithContentsOfURL:[NSURLURLWithString:imageUrl]];

 UIImage *image = [UIImageimageWithData:data];//这两步是下载图片到本地 耗时操作  建议放在子线程来做(为image赋值在子线程是可操作的 并不是刷新UI 不需要回到主线程做) 

 NSArray *paths =NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES);

       NSString *filePath = [[pathsobjectAtIndex:0]stringByAppendingPathComponent:imageName];

//这一步就是拼接路径了 

if ([UIImagePNGRepresentation(image) writeToFile:filePath atomically:YES]) {

}//这一步就是写入操作了  返回值是一个bool值  表明是否成功  




 











0 0
原创粉丝点击