xcode 静态库资源文件及xib封装
目前有个需求,需要把.xib封装到静态库中,试了很多种方法都不行,最后看到这篇文章 ,它是从 iOS Library With Resources 翻译过来的,图片没有显示(原文有)。
这里主要是把静态库种的.xib封装到bundle中,然后把静态库内链到工程中。
以下是这篇文章主要流程:
1 添加资源Bundle Target
资源必须是单独编译成Bundle才能使用,所以需要为MyLibrary(静态库target)项目生成另一个Bundle Target
选择MyLibrary(静态库target)项目,在右边面板中点Add Target->MAC OS X->FRAMEWORK &LIBRARY->Bundle
需要说明,bundle项目只有MAC OS X里才有,但实际上也是可以用于IOS的,只是需要做些改动,即下面的第2步.
2 修改资源bundle target
把bundle target修改成ios能用的,看图
Build Settings设置
1)Architectures为Standard (armv7)
2)Build Active Architecture Only 为指定的IOS版本
3 添加 XIB的输出
设置XIB为输出到BUNDLE,这一步相当于VS c#开发里把某个图片设置编译动作为嵌入资源.
选择Mylibrary(静态库target)项目,targets选择MyLibraryResources(静态库资源target),Build Phases面板
Copy Bundle Resources点+选择xib文件
4 关联静态库引用
把主程序和静态库做关联,这样省得每次要手动添加静态库的.a文件
要说明下:我原本以为编译主程序会自动编译静态库,实际上做的并没有那么好,我改动了静态库的XIB内容,但编译主程序后发现内容还是上次的,所以我每次都是clean build.
编辑Scheme(菜单Product->Edit Scheme)
选择Build
点+,选择MyLibrary(静态库target)和MylibraryResources(静态库资源target)项目
这样的话,每次build都可以编译多个target和scheme。
5 最后设置主程序项目
选择MyLibraryResource(静态库资源target)项目在Build Settings面板里
设置User Header Search Paths为$(BUILT_PRODUCTS_DIR),注意建议把Recursive勾上(递归搜索)
6 使用
选择要使用静态库的工程,target->build phases->copy bundle resources,点击"+",add other 添加MylibraryResources.bundle,一般在build->release-iphoneos目录。
重写controller的init
ResourcesBundle=资源文件bundle
- (id)init
{
NSBundle *bundle = [NSBundle bundleWithURL:[[NSBundlemainBundle] URLForResource:ResourcesBundlewithExtension:@"bundle"]];
if ((self = [super initWithNibName:[NSStringstringWithUTF8String:object_getClassName(self)] bundle:bundle]))
{
//code
}
return self;
}
关于xib中的图片
如果xib中有图片,可能会报以下的警告,然后图片显示不成功。
Could not load the image 'xxx.png' referenced from a nib in the bundle with identifier "com.xxx.xxx"
解决方法:
手动指定xib中的图片
相关推荐
在这个场景下,"Xcode 静态库资源文件及xib封装"是指在静态库中包含并管理用户界面资源文件,如.xib文件,的过程。 .xib(Interface Builder Document)是Apple的Interface Builder工具生成的一种XML文件格式,用于...
Xcode制作包含xib等资源的静态库的流程如下: 1. 创建静态库工程: 在Xcode中新建一个项目,选择“iOS”->“Framework & Library”->“Cocoa Touch Static Library”。点击“Next”,输入项目名称和位置,创建新...
5. **使用静态库**:将合并后的libStaticLib.a和对应的.h文件打包,其他项目可以通过引入这些文件来使用静态库。 **方法二:利用Xcode的WorkSpace** 1. **创建WorkSpace**:Xcode中选择`File > New > Workspace`,...
本文将基于给定文件中的描述,深入探讨如何在Xcode中创建静态库,并演示一个简单的示例。 #### 创建静态库步骤详解 ##### 1. 静态库工程的建立 首先,启动Xcode并选择“File” > “New” > “Project”,在新项目...
`AddJackTemplates`是一个针对Xcode的自定义文件模板工具,它可以帮助开发者快速创建与xib文件绑定的UIView类,并且能一键生成统一风格的头文件,确保代码的整洁和一致性。这个工具特别适合在团队开发中使用,以保持...
如果静态库包含了XIB,那么这些资源需要与库一起打包并正确地传递给目标项目。可以使用CocoaPods、Carthage或Swift Package Manager等依赖管理工具来简化这个过程。 总结来说,静态库中使用XIB允许开发者在库中封装...
在iOS开发中,Xcode制作静态库是一种常见的技术实践,它可以帮助开发者封装代码,提高代码重用性,减少项目体积,提升应用性能。本篇将详细介绍如何使用Xcode创建和使用静态库。 首先,理解静态库的概念至关重要。...
framework静态库通常包含了资源文件、二进制文件以及头文件,因此更易于管理。 1. **创建新的Framework Target**:在Xcode中选择“File” > “New” > “Target”,然后选择“Cocoa Touch Framework”。 2. **添加...
标题"swift-xib2Storyboard-将Xcode.xib转换为.storyboard文件的工具"明确指出了这个工具的主要功能。它允许开发者将独立的XIB文件整合到Storyboard中,这在某些情况下可能更为便捷,例如在已经大量使用XIB的项目中...
### Xcode中如何打包封装C程序为静态库 #### 背景介绍 在iOS开发过程中,经常会遇到需要将一些通用的功能或者模块封装成库供其他项目使用的情况。这种库通常被称为静态库或动态库。静态库(.a文件)是一种常见的形式...
- 将所需的静态库文件(通常为`.a`文件,即编译后的静态库文件)复制到您的Xcode工程中。推荐的做法是将其放置于工程文件夹的根目录下,以便于管理。 **步骤2:将静态库添加到项目** - 打开Xcode工程左侧的导航栏...
本教程将详细介绍如何使用Xcode 6.1创建一个不依赖Storyboard,仅使用XIB(Interface Builder Document)文件的“Hello, World”应用。XIB文件是一种XML格式,用于描述用户界面元素和它们的布局,它们提供了与...
在iOS开发中,静态库是一种常见的代码复用方式,它将多个源文件编译成一个单独的库文件,供其他应用程序引用。本篇文档主要介绍了如何在Xcode 4.2环境下,基于iOS SDK 5.0创建并使用静态库。Xcode 4相较于3版本有...
1. **下载离线打包资源**:你需要从Dcloud网站获取最新的离线打包资源,这通常包括App离线SDK和其他必要的文件。 2. **配置离线打包工程**:这一步涉及到设置证书、文件、图标、应用名称等。在Mac系统中,使用Xcode...
然而,传统的静态库打包过程繁琐,需要手动合并.a文件、拷贝头文件并打包。本文将详细介绍如何通过自动化脚本简化这一过程。 首先,创建一个新的静态库工程,例如名为`TestSDK`。然后,添加一个新的目标(Target)...
"Xcode搜索代码中重复名字的文件"这个主题正是关于如何利用Xcode或者第三方工具来识别并处理项目中可能存在的重复文件名的问题。这有助于减少冗余,优化资源使用,提升应用性能,并避免潜在的冲突和错误。 首先,...
xcode 创建静态库和动态库 1、linux中静态库和动态库区别: 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行。库分静态库和动态库两种。 静态库:这类库的名字一般是libxxx.a;利用静态函数库编译...
XCode极速打包脚本build能够快速打包iOS工程,无需编译的时间等待,解决了iOS项目打包ipa文件的漫长等待时间问题。.gitignoreadd2xcocoapods-buildipa-buildipa-publishipa-publish-firlib-buildREADME....
《Xcode iOS 12.0 资源包详解》 在iOS应用开发领域,Xcode作为苹果官方推荐的集成开发环境(IDE),扮演着至关重要的角色。然而,随着iOS系统的更新迭代,开发者们时常会遇到一个挑战:在旧版Xcode中测试新系统版本...