iOS framework静态库中使用xib和图片资源详解

一、新建bundle

前2篇文章介绍了iOS 最新framework和.a静态库制作及使用全解   iOS 工程套子工程,主工程和framework工程或.a library静态库工程联调

我现在是在主工程的子工程里进行,当然你在创建静态库工程(子工程)的时候也可以。前面我是懒得再建工程了,接着现成主工程套子工程的项目。

1.按下图步骤操作

2.因为iOS框架中没有bundle,要选中OS X框架找到bundle,如下图

二、往bundle加资源文件

将工程中的资源文件都加入到刚刚建的bundle中,如xib、图片。点+号或直接拖都行。步骤如下图。

三、设置bundle

1.iOS Deployment Target改为你支持的最低版本

2.设置base SDK 为latest iOS

四、编译bundle

如下图选择你的bundle作为target进行编译

五、使用bundle里的资源文件

1.如下图将你的bundle拖到主工程的copy bundle resources

2.使用xib代码如下

NSBundle *bundle = [NSBundle bundleWithURL:[[NSBundle mainBundle] URLForResource:@"APPBaseSDKBundle" withExtension:@"bundle"]];
    NSArray *nibs =  [bundle loadNibNamed:@"ZLFTabBar" owner:nil options:nil];

3.使用图片代码如下

NSBundle *bundle = [NSBundle bundleWithURL:[[NSBundle mainBundle] URLForResource:@"APPBaseSDKBundle" withExtension:@"bundle"]];
UIImage *iv = [UIImage imageNamed:@"zhuanqian" inBundle:bundle compatibleWithTraitCollection:nil];
//或
UIImageView *v2 = [[UIImageView alloc] initWithFrame:CGRectMake(0,100, 50, 50)];
 v2.image = [UIImage imageNamed:@"APPBaseSDKBundle.bundle/zhuanqian"];

六、修改资源文件后的处理

1..对于已经制作成了静态库,每次对资源文件有修改都要重新编译bundle。

2.对于主工程套子工程的情况还有另一种方法不用重新编译bundle。如下图给主工程添加对子工程的依赖,这样每次编译主工程的时候也会编译子工程。

给子工程添加对bundle的依赖,这样每次编译子工程时候也会编译bundle。

经过2层依赖关系,那么编译主工程时候就会编译资源文件。

时间: 2024-10-11 13:01:23

iOS framework静态库中使用xib和图片资源详解的相关文章

Xcode 创建.a和framework静态库(转)

最近因为项目中的聊天SDK,需要封装成静态库,所以实践了一下创建静态库的步骤,做下记录. 库介绍 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态库和动态库两种.iOS中的静态库有 .a 和 .framework两种形式:动态库有.dylib 和 .framework 形式,后来.dylib动态库又被苹果替换成.tbd的形式. 静态库与动态库的区别 静态库和动态库是相对编译期和运行期的:静态库在程序编译时会被链接到目标代码中,程序运行时将不再需要改静态库:而动态库在程序

Xcode6.1标准Framework静态库制作方法。工程转Framework,静态库加xib和图片。完美解决方案。

http://www.cocoachina.com/bbs/read.php?tid-282490.html Xcode6.1标准Framework静态库制作方法.工程转Framework,静态库加xib和图片.完美解决方案. 在cocoachina呆挺长时间了.没什么大贡献.就整理了这个,希望对大家有帮助.绝对原创.呵呵. 1.创建一个工程,或者在原有的工程上进行.不在列举.2.在原有工程上添加一个静态库 2.1.选择OS X 的Bundle.因为Xcode6.1中iOS里没有Bundle.

iOS SDK开发之 .framework静态库

查看.a静态库的生成及使用单击此处 注:这篇教程将只使用一小部分Objective-C代码,本文主要讲解从开始到应用的详细步骤.环境:xcode 9.2下面我们开始操作: 第一步:创建一个静态库工程 打开Xcode,选择新建一个项目,新建Cocoa Touch Framework.名称看自己需求起名,我直接叫MYSDK. 创建完成后已经有一个.h文件MMYSDK.h和Info.plist文件,如果想要新实现方法封装成SDK可以直接新建类在里面实现,也可以将自己已经实现功能的类添加到工程里面.(这

iOS 创建静态库文件时去掉其中的Symbols

在工程中创建静态库文件时,默认会将一些Symbols加到静态库文件中,这样做有两个缺点: 1.如果引用静态库文件的工程中发生了bug,就会直接跳转到静态库的源码. 2.静态库文件的大小会因此翻几番.本人最近做的这个静态库文件中,去掉symbols前大小为7.8MB左右,去掉以后大小为2.8MB. 要去掉Symbols,首先打开Build Settings并选中静态库的Target,然后设置下列选项: 如果有错误或遗漏,欢迎批评指正. iOS 创建静态库文件时去掉其中的Symbols,布布扣,bu

iOS .a静态库

[转载自 “文顶顶”] 一.简单介绍 1.什么是库? 库是程序代码的集合,是共享程序代码的一种方式 2.库的分类 根据源代码的公开情况,库可以分为2种类型 (1)开源库 公开源代码,能看到具体实现 比如SDWebImage.AFNetworking (2)闭源库 不公开源代码,是经过编译后的二进制文件,看不到具体实现 主要分为:静态库.动态库 二.静态库和动态库 1.静态库和动态库的存在形式 静态库:.a 和 .framework 动态库:.dylib 和 .framework 2.静态库和动态

plist文件无法打包进.a静态库中

问题: 之前一直在做静态库的编写与维护,也一直知道静态库的图片资源是没办法打进.a中的.可是突然有个想法.由于有非常多參数的配置是在一个plist文件里的.尽管也知道这是一个plist文件,可是想想和图片资源还是有一定差别的.所以就尝试着是否能把plist打进静态库中. 分析: 1. 创建了一个简单的生成静态库的功能,然后公开了一个接口.用来输出读取plist文件的结果. 2. 创建一个简单的project,来使用上一步生成的.a文件,然后调用那个公开的接口. 3. 结果是无法读取,输出为nul

ios开发静态库生成

首先简单说下哈: 库就是程序代码的集合,是共享代码的一种方式 分为开源库(sd,mi,afn)和闭源库(看不到具体实现的) 闭源库分为静态库和动态库 静态库: .a 和 .framework 动态库: .dylib 和 .framework 静态库和动态库在使用上的区别 静态库:链接时,静态库会被完整地复制到可执行文件中, 被多次使用就有多份冗余拷贝 动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存 注意啦: 使用自己制作的动态库无法上传a

ios开发 静态库制作

IOS程序是由Objective-c语言构成,而是Objective-c语言中每一个类又分成 .h .m 文件.静态库可以将这些程序的类封装成一个.a文件,第三方应用程序只需要拿到这个.a文件和代码对应的.h文件即可使用静态库中封装的方法.总的来说IOS静态库适合去制作第三方提供的SDK,废话不多说了我们直接进正题. 制作静态库 代码如下 1 #import <Foundation/Foundation.h> 2 3 @interface BookModelLib : NSObject 4 {

如何让静态库中的可执行程序不调用的函数不链接进该可执行程序?(-ffunction-sections -Wl,--gc-sections)

如何让静态库中的可执行程序不调用的函数不链接进该可执行程序?(-ffunction-sections -Wl,--gc-sections) 关键词: -Wl,--gc-sections   -ffunction-sections  链接  elf   库 有时我们会遇到这种情况,可执行程序需要链接一些静态库,但是静态库中的函数并没有全部使用,只用了其中的几个,但是系统默认会自动把整个静态库全部链接到可执行程序中,造成可执行程序的大小大大增加,浪费了flash空间和内存空间.gcc为我们提供的解决