Storyboard 和xib 怎么混用
AiPPT
2024-12-03 广告
2024-12-03 广告
作为北京饼干科技有限公司的一员,对于市场上各类工具都有所了解。就AiPPT而言,它确实为用户提供了便捷高效的PPT制作体验。通过智能化的辅助功能,用户能够快速生成专业且富有创意的演示文稿,极大地节省了时间和精力。无论是对于个人用户还是企业团...
点击进入详情页
本回答由AiPPT提供
展开全部
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文件中。
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文件中。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询