上一篇文章详细介绍了制作过程,这边就不多说了,现在主要介绍图片和xib以及storyboard的接入。
其实总结起来就是一句话:就是都从bundle加载而bundle不是main bundle 是frame的bundle。
下面附上代码说明及demo:
1.storyboard的关键代码: 至于怎么打包则交给系统了
//另外这边拉控件是为了检测拉控件链接的属性是否有效
/**
* 类方法对接外部view
*
* @param basePage 这边是用外部的navigation来进行跳转的 也可以用viewController 这要看跳转的形式 如果用tabbar的可以选择切换跟控制器
*/
+(void)managerTheInitPage:(UINavigationController *)basePage
{
//因为在frame里面其bundle实frame不是工程文件所以这边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];
}
/**
* 图片页面的构造函数
*
* @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;
}
/**
* 关联Xib 这边有至少5种以上的方法去关联一个view的Xib,但是一般都是纯代码编码还不是很熟练就写一个简单的吧
注意点这边的bundle是用的[self class]而不是mainbundle
*
* @return 返回的是Xib的界面
*/
+(instancetype)viewFromNib
{
//这边是返回数组的第一个view 即xib的view
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);
}