您的位置:首页 > 理论基础 > 计算机网络

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

2016-12-28 17:44 411 查看
最近项目改用网络加载图标以及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 = [[paths
objectAtIndex:0]stringByAppendingPathComponent:imageName];
//这一步就是拼接路径了 

if
([UIImagePNGRepresentation(image) writeToFile:filePath atomically:YES])
{
}//这一步就是写入操作了  返回值是一个bool值  表明是否成功  

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  技术
相关文章推荐