UIStoryBoard的优缺点都非常明显,导致两极分化严重。虽然我在下面吐槽了很多Storyboard的问题,但是依旧非常喜欢Storyboard,建议10人以下的团队果断转向Storyboard。

Storyboard的缺点

1. Storyboard不是万能的,限制很多,导致某些界面必须要加代码实现。这就导致了同一界面实现的分离,如果在IB和代码中同时改变了某个控件,还需要考虑执行顺序。不利于后期维护。

2. 在Storyboard中编辑的界面无法添加注释,也没有其他特殊标记,导致自定义的值和默认值混淆在一起,这非常不利于后期维护,修改时需要一个个比对。希望下次Xcode升级能增加自定义值自动加粗的功能,xcodeproj文件已经有这个功能了。

3. 接上条,因为在版本管理工具中也很难看出修改点,别人某次修改过的东西无从查起,所以还是不适合大团队使用。

4. Storyboard中每个控件和其他任何一个控件混合使用时,最佳实践各不相同,这大大增加了学习成本。而且,苹果每年在Storyboard上都有变动,可能会导致已经实现好的界面需要重新编写。

5. Xcode、Interface Builder经常出现莫名其妙的问题,而且这些问题都是偶现,往往也就出现一次,解决起来费时费力很烦躁。

Storyboard的优点

1. Storyboard的版本管理中的冲突现在已经不是问题,可以很方便的拆分,iOS 9以前有第三方库,iOS 9则自带了Storyboard reference。

2. 强制分离视图代码和控制器代码,这样即便没有严格的Code Review也能让代码不出现大杂烩,实在是受够了某些项目中view代码、Masonry代码、Controller代码混合在一起的感觉。

3. Xcode 6以后的新特性@IBDesignable和@IBInspectable能够很大程度做到所见即所得,只是非常考验Mac的性能。学习时要有耐心,因为会经常出现上面的缺点5。

4. 如果Storyboard使用熟练,可以少写很多视图代码和胶水代码,能够大大提高编码速度。

转载于:https://juejin.im/post/5a684e5bf265da3e5133471e

Storyboard使用心得相关推荐

  1. 两个月新手的几点 storyboard 心得

    10年我刚开始进行业余的 iOS 开发时,使用 xib 开发了 iTimeLog 最初的界面,后面几次改版之后全部改成了使用代码写界面元素,我一直觉得相对于当时的 xib xml 文件格式,使用 Ob ...

  2. Storyboard 之segue用法总结

    Storyboard的好玩之处在于它可以帮我们省略了很多要手动写的代码,其中segue的功劳功不可没,现总结一下学习心得,若有错误之处,望指正. 创建工程,选择 Single View Applica ...

  3. 2018年1月iOS招人心得(附面试题)- 答案整理

    2018年1月iOS招人心得(附面试题)- 答案整理 基础不牢,地动山摇. 面试问的大多都是开发所必备的基础知识,通过面试题整理自己的技术栈是一个非常不错的途径. 这套面试题可作为开发同仁的一份复习提 ...

  4. iOS 驾驭 StoryBoard

    iOS 开发 UI 搭建心得(一)-- 驾驭 StoryBoard 代码示例:https://github.com/johnlui/Swift-On-iOS/blob/master/Different ...

  5. iOS 2018 绝密面试题+面试心得2

    第一部分:面试题 注意,下面这些题只是我准备的题库.在实际面试的时候我会根据面试者的水平抽出相应的题目来出的. 技术基础 1.为什么说Objective-C是一门动态的语言? 2.讲一下MVC和MVV ...

  6. Storyboard的爱与恨

    作为Android,iOS,H5的混合移动团队,我感觉storyboard对我们价值巨大,用了swift和storyboard后,iOS App同样功能swift代码只有android java代码的 ...

  7. [iOS]Storyboard的爱与恨

    本文为cocochina投稿文章,作者:潘晟 尽管现在已经是Apple将Storyboard整合进Xcode中的第四个年头,大家对于Storyboard的评价仍然褒贬不一.有早期就选择转向Storyb ...

  8. 如何在storyboard设置圆角(cornerRadius)、边框(borderWidth)等操作。

    目录 方法1:Runtime Attributes 方法2:使用@IBInspectable(下面以UIButton为例介绍使用方法) Step1:创建一个UIButton分类(Category)UI ...

  9. Java EE学习心得

    –Java EE学习心得   1.    称为编程专家的秘诀是: 思考-----编程--------思考------编程--.. 编程不能一步到位,不能一上来就编,必须先思考如何写,怎样写?然后再编程 ...

  10. 测试心得:微图书销售小程序

    测试心得:微图书销售小程序 前言 这个学期差不多也将近结束,经过大半个学期,从项目需求的确认和项目文档的编写,到一步步的设计与实现,现在终于到了测试阶段,但是我们在测试阶段也暴露出了很多bug,但是每 ...

最新文章

  1. JVM内存模型:运行时栈帧结构
  2. boost::hana::make_lazy用法的测试程序
  3. linux安装unzip及使用
  4. 利用继承和组合实现软件复用
  5. C#根据字节数截取字符串【转载】
  6. python 消息框架_消息框架message
  7. WEB建站规划之建站目的
  8. 发那科机器人注油_东莞发那科工业机器人维保中心
  9. 转 常见视频编码方式以及封装格式
  10. 抖音搬运新技术秒上热门,爆抖神器,效果惊人
  11. 投资理财--动态市盈率静态市盈率 整理
  12. Godot Engine:用着色器实现通过开关隐藏部分模型
  13. 摆脱“概念化”,自动售货机玩儿“物联网”是否靠谱?
  14. unity3d ios 应用闪退 variables may not be available
  15. 纵向手风琴html,CSS3制作垂直手风琴
  16. i-Refill | 张益唐:虽未实现大海捞针,但摸透了整个海底的情况
  17. python写xml多了ns0_python – SUDS生成的XML不正确
  18. 智能化有何魅力,让奇瑞鲍思语如此坚定
  19. 【R语言文本挖掘】:tidy数据格式及词频计算
  20. 程序员应知必会的思维模型之 25 普特定律 (Putt‘s Law)

热门文章

  1. 图片延迟加载(lazyload)的实现原理
  2. Windows 2003中如何启动IIS6的GZIP压缩网页传输(补充)
  3. Safari/Chrome浏览器打不开淘宝/天猫网页怎么办?
  4. 人人都可以用Mac--安装和卸载应用软件
  5. 电商项目面试题 及mysql面试题 太难没啥用
  6. spring boot启动加载外部配置文件
  7. rocketmq--push消费过程
  8. 《Java安全编码标准》一第 1 章 概  述
  9. i386和x86-64区别通俗易懂版本(转)
  10. 如何用Python做舆情时间序列可视化?