如果您想在构建静态库时使用界面构建器构建界面,则需要制作一个捆绑包并将其与您的库一起分发。
在 Xcode 中:
- 文件>新建>目标
- 从 OS X 框架和库部分选择“捆绑包”
- 填写详细信息。捆绑框架应该是核心基础。
然后,您需要与框架同时编译您的包。将捆绑包添加到框架的“目标依赖项”构建阶段。
当您制作 xib 时,您将其目标定为您创建的新捆绑包。
然后,当您在派生数据目录中编译框架时,您将在框架二进制文件旁边找到已编译的包。您可以将其与框架二进制文件一起提供给第三方。
那么如何在代码中引用这个包呢?在 iOS 中,无法加载捆绑包,并且您的捆绑包实际上将位于第三方的 iOS 应用程序主捆绑包内。您可以在 NSBundle 上创建一个类别,以便从代码中方便地访问您的包:
@interface NSBundle (mybundle)
+(NSBundle *)myBundle;
@end
@implementation NSBundle (mybundle)
static NSBundle * _myBundle;
+(NSBundle *)myBundle{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
NSBundle * mainBundle = [NSBundle mainBundle];
NSString * pathToMyBundle = [mainBundle pathForResource:@"myBundle" ofType:@"bundle"];
NSAssert(pathToMyBundle, @"bundle not found", nil);
_myBundle = [NSBundle bundleWithPath:pathToMyBundle];
});
return _myBundle;
}
然后,您可以在代码中访问您的包以加载 xib,如下所示:
UIViewController * controller = [[UIViewController alloc] initWithNibName:nil bundle:[NSBundle myBundle]];
请记住,如果您在框架代码中使用类别,您将需要确保您的框架使用者添加-ObjC
(or -all_load
如果不使用最新的 Xcode)“其他链接器标志”到他们的项目