Storyboard 和xib 怎么混用

 我来答
ericsekkei
2016-03-22 · TA获得超过2625个赞
知道大有可为答主
回答量:1598
采纳率:0%
帮助的人:858万
展开全部

  对于楼下复制知乎的我不赞同

  xib和storyboard的比较,一个轻量级一个重量级。 共同点: 都用来描述软件界面 都用Interface Builder工具来编辑 不同点:
Xib是轻量级的,用来描述局部的UI界面 Storyboard是重量级的,用来描述整个软件的多个界面,并且能展示多个界面之间的跳转关系

  他们用起来是差不多的,只是所调用的初始化方法不同。xib是通过文件名(nibName)实例化,storyboard是通过一个identify来实例化。另外xib是一个view,storyboard上的则需要用一个controller来管理一个view。

AiPPT
2024-12-03 广告
作为北京饼干科技有限公司的一员,对于市场上各类工具都有所了解。就AiPPT而言,它确实为用户提供了便捷高效的PPT制作体验。通过智能化的辅助功能,用户能够快速生成专业且富有创意的演示文稿,极大地节省了时间和精力。无论是对于个人用户还是企业团... 点击进入详情页
本回答由AiPPT提供
xiangjuan314
2016-03-22 · TA获得超过3.3万个赞
知道大有可为答主
回答量:2.9万
采纳率:0%
帮助的人:2934万
展开全部
xib和storyboard的比较,一个轻量级一个重量级。 共同点: 都用来描述软件界面 都用Interface Builder工具来编辑 不同点: Xib是轻量级的,用来描述局部的UI界面 Storyboard是重量级的,用来描述整个软件的多个界面,并且能展示多个界面之间的跳转关系
1. 新建ABC类(subclass UIView)以及ABC.xib
2. 设置ABC.xib的file owner为ABC类, 记住不是设置xib里面那个view的Custom Class,那个就是默认的uiview就好
3. 在ABC类中建立一个类型是UIView的property,假设叫view。 然后再init方法中load这个XIB到view(不是load到ABC的实例,而是load给view这个property),设定view的frame是ABC的bounds,添加这个view到self( ABC的实例 )。

这个时候,一个最简单的reusable view就封装好了。

4. 在storyboard中,拖一个UIView到随便一个scene中,然后把这个uiview的custom class设为ABC类,就完成了上述View的导入工作。

虽然更改了custom class,但依然要运行的时候那个view才能是XIB里你设计的样子,如果想在storyboard中就看到你设计的XIB加载在scene中得样子呢?

5. 在ABC类声明前加上 @IBDesignable(如果加这个,需要同时实现initwithcoder 以及initwithframe方法,方法体可以相同)

这个时候点回storyboard的文件。骚等片刻,你刚才拖得那个view,应该已经变成XIB里面的样子了。

什么? 还想再storyboard里设置ABC类的属性?并实时看效果?

6. 在ABC类中,添加 @IBInspectable 修饰的属性,然后再属性的setter添加一些修改你ABC类展示的代码。

再点回storyboard,选择ABC那个view,你会发现inspector中已经多了你新增的属性,并且你修改值后,storyboard也会立即刷新(前提是你机器够快的话……这里会触发一次build……)

什么?改值以后没变化? 别担心这很正常,这功能的坑就是这么多。

首先检查你的inspectable属性是否是以下之一:

Int
CGFloat
Double
String
Bool
CGPoint
CGSize
CGRect
UIColor
UIImage
目前 @IBInspectable就支持这些类型,看着相似也不行的哟,比如Swift的Float 也是会跪的。一般情况下如果你类型写错了,都会伴随一个your custom view is not compatible with KVC的warning

然后,每次storyboard刷新的时候,inspector都会告诉你ui 刷新的结果,warning可以直接查看。但是crash的话,是没办法在xcode中打印报错的,错误日志保存在~/Library/Logs/DiagnositcReport/IB........crash文件中。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式