在StoryBoard/Xib 中复用Xib 并实时预览
来源:互联网 发布:linux sshd服务是什么 编辑:程序博客网 时间:2024/06/06 02:37
最近想整理一下项目中下单支付的模块,然后想到用xib独立出来并在多个ViewController中来复用,
首先说一下自己对xib/StoryBoard 和 纯代码布局的看法.
一些人坚持用纯代码做布局,并且非常抗拒ib 甚至有鄙视后者的人,首先布局这个是没有多少技术含量在里面的,使用ib 能够大大的提升效率,并且在项目维护上比纯代码要直观的多,这里提一下安卓的布局与逻辑的分离,xml负责样式,.java负责逻辑,然后iOS的ib 本质上也是xml 与 安卓十分类似.
上面所说的就是表达一下自己的态度吧.
其实在百度中搜索StoryBoard复用xib 或者相互混用,能搜出很多,不过大部分并没有加入实时预览或者不是很完整,所以自己在照着别人做的情况下做了一些整合和改进,希望对大家有帮助,先上Demo的地址,后期添加功能的话也会在这里修改.
现在已经能做到在StoryBoard中添加并显示内部内容,做的比较简陋,
先上几个前辈的链接
链接1:这个是用Swift实现,如果改OC需要注意一些地方
链接2:这个对我影响比较大,但是其中的setFrame方法需要外部调用,感觉是不足,改进了下.
上一段认为比较核心的代码
- (instancetype)initWithCoder:(NSCoder *)coder { self = [super initWithCoder:coder]; if (self) { [self createView]; } return self;}- (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { [self createView]; } return self;}- (void)setFrame:(CGRect)frame { [super setFrame:frame]; self.view.frame = self.bounds;}- (void)createView { self.view = [[NSBundle bundleForClass:[self class]] loadNibNamed:NSStringFromClass([self class]) owner:self options:nil][0]; self.view.frame = self.bounds; [self addSubview:self.view];}按顺序说下这四个方法的作用,这些是经过验证的,当前开发环境 Xcode 8.3.2 + iOS 10.3.2
1. 加载自定义View时会调用这个方法,
2. 如果想在ib 中显示复用View的内容需要重写这个
3. 如果想在ib 中显示正确的frame(不写这个不会调用autolayout),需要重写这个
4. 会吧ib中的View 加载到父View上
在链接2中使用的方式是重写awakeFromNib,在这里添加View,但是在我这个开发环境下,调用awakeFromNib必须[super awaleFromNib],这样就会在当前ViewController的View上多显示一层 customView;
这样发现
IB_DESIGNABLE
这个宏命令竟然没有什么作用了.
希望对大家哟帮助.
- 在StoryBoard/Xib 中复用Xib 并实时预览
- [iOS] 添加自定义字体,并在storyboard/xib中使用
- Xib&Storyboard
- 如何在Xcode中预览Storyboard/Xib在各款设备上的适配效果
- oc----巧用storyboard/xib的小技巧,Preview~预览,提高效率
- 如何ScrollView在XIB或者Storyboard中设置约束并实现翻页滚动效果
- xcode xib,storyboard降级
- storyboard 和 xib
- storyboard 跳转 xib
- xib 与 Storyboard 区别
- Xib和storyboard对比
- 动态加载StoryBoard、xib
- Xib和storyboard对比
- Xib和storyboard对比
- Xib和storyboard对比
- Storyboard/Xib 进阶教程
- Xib和storyboard对比
- code/xib/storyboard
- 机房重构总结--界面与功能篇
- Binary Tree Paths
- 深入理解CSS中的层叠上下文和层叠顺序
- 通过python编写定时任务压缩日志文件
- iOS 键盘限制输入内容限制、输入长度限制
- 在StoryBoard/Xib 中复用Xib 并实时预览
- JQuery checkbox操作
- CSS样式表继承详解
- css background之设置图片为背景技巧
- ROS教程(二十一):Roslaunch在大型项目中的使用技巧
- MyEclipse配置tomcat远程debug
- 面试准备之activeMQ及freemarker
- ural 1002. Phone Numbers tire+spfa
- NotificationListenerService 权限获取