美文网首页
组件17:骨架组件化-资源加载

组件17:骨架组件化-资源加载

作者: Lovell_ | 来源:发表于2017-07-11 22:51 被阅读39次

一、解决图片加载的问题:

  1. 图片放置的位置:
  2. 每个宿主工程都要用到的图片:放在外界,Images.xcassets,比如tabBar按钮的图片;
  3. 组件内用到的图片:放入对应的组件;
  4. 修改加载路径:
  5. 代码NSBundle和[UIImage imageNamed:@"tabbar_bg"];
  6. xib、storyboard加载图片路径

二、需要了解的知识:

获取图片的工具:
  1. iOSImagesExtractor ;
  2. cartool (在参数那里,前一个是输入路径,后一个是输出路径)。
组件化Bundle路径:

NSBundle *mainBundle = [NSBundle mainBundle];//主bundle
NSBundle *currentBundle = [NSBundle bundleForClass:self];//对应组件中的bundle
NSLog(@"mainBundle——>%@",mainBundle);
NSLog(@"currentBundle——>%@",currentBundle);

主Bundle(默认):mainBundle——>NSBundle </Users/fengluo/Library/Developer/CoreSimulator/Devices/1F8ABC0F-4C13-4E90-A11C-A2910F304687/data/Containers/Bundle/Application/F269A0A9-6DB4-4FDC-96B5-1B45ED1D7920/LFFMMain_Example.app> (loaded)
库对应的Bundle:currentBundle——>NSBundle </Users/fengluo/Library/Developer/CoreSimulator/Devices/1F8ABC0F-4C13-4E90-A11C-A2910F304687/data/Containers/Bundle/Application/F269A0A9-6DB4-4FDC-96B5-1B45ED1D7920/LFFMMain_Example.app/Frameworks/LFFMMain.framework> (loaded)
主Bundle和库对应的Bundle
主Bundle和库对应的Bundle.png

三、操作步骤

  1. 准备图片:可以使用iOSImagesExtractor、cartool,或者别出找;
  2. 主骨架图片放在宿主工程的Images.xcassets,因为每个宿主工程都要用到;


    xcassets.png
  3. 组件特有的图片放入对应组件的Assets;


    组件对应的Assets.png
  4. 修改库中xib、storyboard中图片的加载路径:LFFMMain.bundle/tabbar_np_shadow,即在原来的图片名前面加上对应的bundleLFFMMain.bundle/
    Snip20170711_112.png
  5. 代码中Nib、图片资源加载:
  6. 涉及到NSBundle:
NSBundle *currentBundle = [NSBundle bundleForClass:self];
XMGMiddleView *middleView = [[currentBundle loadNibNamed:@"XMGMiddleView" owner:nil options:nil] firstObject];
  1. 涉及到[UIImage imageNamed:@"tabbar_bg"]
NSBundle *currentBundle = [NSBundle bundleForClass:[self class]];
NSString *imagePath = [currentBundle pathForResource:@"tabbar_bg@2x.png" ofType:nil inDirectory:@"LFFMMain.bundle"];
UIImage *image = [UIImage imageWithContentsOfFile:imagePath];
self.backgroundImage = image;
imageNamed在组件中如何使用.png

####### 获取图片工具的使用

1.iOSImagesExtractor 的使用:
缺点是只能解压出@2x.png,解压不出@3x.png的图片

iOSImagesExtractor使用.png

2.cartool 的使用
可以解压出@3x.png的图片,只是用法有点奇葩

cartool使用.png

相关文章

  • 组件17:骨架组件化-资源加载

    一、解决图片加载的问题: 图片放置的位置: 每个宿主工程都要用到的图片:放在外界,Images.xcassets,...

  • 前端组件化

    组件化 应用➡️页面➡️模块➡️组件➡️ 组件与组件之间的关系是组合不是依赖 资源加载路径的层级问题? ../....

  • 戏说移动江湖开发历程

    大主线 细说移动开发历程 大技术 组件化开发 组件路由 组件配置动态加载 组件骨架架构插件化开发...

  • 组件18:主框架组件化(上传骨架组件)

    组件16和组件17在本地已经把骨架组件化了,这一步是把本地的骨架组件上传到远程,以供团队其他人使用。 步骤: 创建...

  • ET资源加载

    ET资源加载 结构 ResourcesComponent【资源组件】(用于加载资源)AssetsBundleLoa...

  • SPA应用性能优化问题

    解决空白屏问题 组件懒加载和路由懒加载 骨架屏 骨架屏(skeleton screen)已经不是什么新奇的概念,他...

  • tomcat-4-Lifecycle

    什么是Lifecycle 组件tomcat启动时初始化依赖的下层组件父组件管理子组件 Servlet加载和实例化(...

  • tomcat-5-Pipeline

    什么是Lifecycle 组件tomcat启动时初始化依赖的下层组件父组件管理子组件 Servlet加载和实例化(...

  • 组件化

    组件构成 基础组件(分类) 功能组件 业务组件 (骨架) 创建私有库

  • 封装一个骨架屏

    为了在加载的过程中等待效果更好,封装一个骨架屏组件。 大致步骤: 需要一个组件,做占位使用。这个占位组件有个专业术...

网友评论

      本文标题:组件17:骨架组件化-资源加载

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