Xcode 7.3.1 的framework的制作之Xib,图片和storyboard的制作

本文聚焦于在Xcode 7.3.1中如何将Xib、图片和Storyboard集成到自定义framework中。关键在于从非main bundle加载资源,例如通过NSBundle的bundleForClass方法获取正确的bundle。文中提供了storyboard初始化页面、图片加载和Xib关联的代码示例,展示了如何在framework中有效地使用这些元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一篇文章详细介绍了制作过程,这边就不多说了,现在主要介绍图片和xib以及storyboard的接入。

其实总结起来就是一句话:就是都从bundle加载而bundle不是main bundle 是frame的bundle。

下面附上代码说明及demo:

1.storyboard的关键代码: 至于怎么打包则交给系统了

//另外这边拉控件是为了检测拉控件链接的属性是否有效

/**

 *  类方法对接外部view

 *

 *  @param basePage 这边是用外部的navigation来进行跳转的 也可以用viewController 这要看跳转的形式 如果用tabbar的可以选择切换跟控制器

 */

+(void)managerTheInitPage:(UINavigationController *)basePage

{

    //因为在frame里面其bundleframe不是工程文件所以这边bundle要按一下写

    NSBundle *mainBundler = [NSBundle bundleForClass:[self class]];

    //切换storyboard

    UIStoryboard *stroyboard = [UIStoryboard storyboardWithName:@"TestStoryboard" bundle:mainBundler];

    //设置storyboard的启动视图

    StoryboardTestViewController *vc = [stroyboard instantiateViewControllerWithIdentifier:@"test"];

    [basePage pushViewController:vc animated:YES];

}



注意:图片和xib这个framework我没有全部暴露头文件只要暴露入口文件就可以了内部逻辑别人就看到不到了

2.图片的关键代码:ios8.0以后适用 因为是这据关键代码是ios8.0之后出来的

 
 imageView.image = [UIImage imageNamed:@"用户头像" inBundle:bundle compatibleWithTraitCollection:nil];

/**

 *  图片页面的构造函数

 *

 *  @param frame 位置

 *

 *  @return 返回view

 */

-(instancetype)initWithFrame:(CGRect)frame

{

    self = [super initWithFrame:frame];

    if (self) {

        //创建图片

        UIImageView *imageView = [[UIImageView alloc]init];

        //同样这边图片是放在Assets.xcassets里面的

        NSBundle *bundle = [NSBundle bundleForClass:[self class]];

        //这边是从bundle中获取的图像资源

        imageView.image = [UIImage imageNamed:@"用户头像" inBundle:bundle compatibleWithTraitCollection:nil];

        //设置图片的位置

        imageView.frame = CGRectMake(100, 100, 50, 50);

        [self addSubview:imageView];

    }

    return self;

}



3.Xib的关键代码:这边Xib被打包成了nib文件
return [[NSBundle bundleForClass:[self class]]loadNibNamed:@"TheXibPage" owner:nil options:nil][0];

/**

 *  关联Xib 这边有至少5种以上的方法去关联一个viewXib,但是一般都是纯代码编码还不是很熟练就写一个简单的吧

 注意点这边的bundle是用的[self class]而不是mainbundle

 *

 *  @return 返回的是Xib的界面

 */

+(instancetype)viewFromNib

{

    //这边是返回数组的第一个view xibview

    return [[NSBundle bundleForClass:[self class]]loadNibNamed:@"TheXibPage" owner:nil options:nil][0];

}


/**

 *  这边是xib设置属性布局的地方

 */

-(void)awakeFromNib

{

    

    self.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height);

    

}


其实图片和xib以及storyboard 跟纯代码一样万变不离其宗 就是二进制文件 以及 bundle文件(资源文件)的交互。
下面附上Github的Demo:https://github.com/ClementGu/DynamicFramewokrkDemo.git

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值