-
app图片的存放方式
1.1buddle存放
我们在各种sdk中都可以看到,既整洁又可以达到资源隔离的效果。
采用 bundle 的加载方式为 [UIImage imageNamed:"xx.bundle/xx.png"]。这种方式也存在着明显的缺点:
1.ios系统不会对其进行打包压缩,造成了app包体积的增大
2.使用 bundle 存储图片放弃了 APP thinning。明显的表现是 2 倍屏手机和 3 倍屏手机下载的应用包大小一样。如果能够实现 APP thinning,那么往往 2 倍屏幕的手机包大小会小于 3 倍屏手机的,起到差异性优化的目的。1.2使用 .ttf 字体文件替代图标
使用字体文件代替图片资源。这也是一种比较常见的资源内置方式。
优点:- 显而易见的,为了保证图片的清晰度,UI会提供比较大的图标。使用了字体文件就不必导入@2x和@3x的图片,一套字体文件就能保证ui的清晰度。可以降低应用图片内置资源的体积。
可以随意缩放和修改颜色。
2.字体文件使用起来也不难,从https://www.iconfont.cn/下载代码,把ttf文件导入到项目中,借助淘点点科技写的一个关于iconfont封装 TBCityIconFont。
- 显而易见的,为了保证图片的清晰度,UI会提供比较大的图标。使用了字体文件就不必导入@2x和@3x的图片,一套字体文件就能保证ui的清晰度。可以降低应用图片内置资源的体积。
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(100, 50, 30, 30)];
[self.view addSubview:imageView];
imageView.image = [UIImage iconWithInfo:TBCityIconInfoMake(@"\U0000e603", 30, [UIColor redColor])];
// button
UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
button.frame = CGRectMake(100, 100, 40, 40);
[self.view addSubview:button];
[button setImage:[UIImage iconWithInfo:TBCityIconInfoMake(@"\U0000e60c", 40, [UIColor redColor])] forState:UIControlStateNormal];
[button setTintColor:[UIColor greenColor]];
// label,label可以将文字与图标结合一起,直接用label的text属性将图标显示出来
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(50, 160, 280, 40)];
[self.view addSubview:label];
label.font = [UIFont fontWithName:@"lhr_iconfont" size:15];//设置label的字体
label.text = @"这是用label显示的iconfont \U0000ef48";
缺点:
1.图片的查找和替换比较麻烦。单色修改颜色是可以成功,但是多色彩的时候就无法达到理想效果。
2.有些情况无法替换之前存在的图片,只能起到缩小增量的目的,无法减小全量。
可以把项目中的一些基础的公共功能图片设置成iconfont显示。
1.3图片存在 Assets.xcassets
使用 Assets.xcassets 是苹果推荐的一种方式。Assets.xcassets 是 iOS7 推出的一种图片资源管理工具,将图片内置到Assets.xcassets 下系统会对图片资源进行压缩,并且支持 APP thinning。
网友评论