Storyboard、Nib文件和代码来实现UI的利与弊
很清楚,这就是iOS里面两种可视化UI的方法。加上全部用代码来实现UI,总共有三种方法可以来实现。
我们先说一下全用代码来做,这个方法属于比较极端的程序员所推崇的,优点和缺点同样明显。
优点是可以实现所有的功能,用Nib文件和Storyboard可以实现的功能用代码都能实现,不能实现的一些功能,用代码也能实现;另外用代码方便多人共同开发项目,版本管理比较方便,Nib文件和Storyboard这点上就是致命伤了(Xcode5之后好了不少),最后一个就是这种开发方法很有高大上的感觉,可以让程序员自我迷醉。
缺点是代码不够直观,而且冗余很重。直接看代码你很难对一个View马上有个大体的印象,需要运行起来才能完整的看到全貌;至于代码冗余也很好理解,你看见View初始化之后都是一堆堆的设置frame,各种target-action的设置,也会觉得冗余的。
Nib文件是用InterfaceBuild来辅助做可视化的UI设计的文件,如果你用过微软的VisualBasic,VisualC++等等可视化开发语言的话,对这个概念应该不陌生。
用这个来开发UI同样让你欢喜让你忧,欢喜的是简单地UI确实比较方便,用鼠标拖拉一下,再加上一些设置就可以做出来了。忧的是这个功能实际上是用xml来存下View里面的内容,Xcode5之前打开文件,不加任何修改都能发现变化了,版本管理时满文件都是红色的,在多人修改到同一个文件时简直就是噩梦,Xcode5之后好了不少,但小组开发时少方便仍然是存在的问题。用Nib文件生成的UI,用代码都可以进行修正,我们往往会在Nib文件里面设置一部分,然后再代码中修正实现另外一部分,这样的编码方法容易起一些冲突,有时会让人很头晕。还有一点,这样生成的内容在不同的项目中复用是很难实现的。
Storyboard实在iOS5之后出现的概念,2011年的WWDC的Session309《Introducing Interface Builder Storyboarding》里面提出来的。这个东西的出现是为了弥补Nib文件仅仅针对一个View,没有针对整体应用流程的改进,同时它可以进一步节省代码。试用了一下,一个简单的例子,见下图:
个人的感觉嘛,怎么说呢,觉得一个人开发的简单项目中使用还是很不错的。应用的流程比较清晰,可以做到一目了然,View的切换是自动的,避免了用代码来做,可以进一步减少开发的工作量。缺点还是不适合多人共用,一个board多人一起维护的情形想想就觉得没那么简单,当然,有看到说应用并非只有一个board,每人可以用自己的board来开发。我承认,这样做会减少很多麻烦,但仍然感觉给版本管理带来了不小的麻烦(退化到极限,不就是Nib文件了么),另外,不管怎么说,代码的复用确实是变得困难了。
要说明的是,Storyboard和Nib文件并非是非此即彼的互斥关系,在用了Storyboard的应用中也可以用Nib文件,这对实现一些复杂的UI是有帮助的。当然,代码必不可少的需要增加一些。
我所从事的开发中,从来没用过纯用代码来实现UI,感觉这样做实现/调试/维护都不方便。很多项目由于有历史包袱,目前都是用Nib文件的方法在开发维护,新的应用感觉比较小巧,一个人能开发过来的,决定用Storyboard来实现,慢慢逐渐转向用Storyboard来开发。毕竟苹果对于这个工具持续在改进,也是未来力推的一个方向。
Storyboard、Nib文件和代码来实现UI的利与弊的更多相关文章
- 使用XML布局文件和Java代码混合控制UI界面
完全使用Java代码来控制UI界面不仅烦琐.而且不利于解耦:而完全利用XML布局文件来控制UI界面虽然方便.便捷,但难免有失灵活.因此有些时候,可能需要混合使用XML布局文件和代码来控制UI界面. 当 ...
- 【Xamarin挖墙脚系列:代码手写UI,xib和StoryBoard间的博弈,以及Interface Builder的一些小技巧(转)】
正愁如何选择构建项目中的视图呢,现在官方推荐画板 Storybord...但是好像 xib貌似更胜一筹.以前的老棒子总喜欢装吊,用代码写....用代码堆一个HTML页面不知道你们尝试过没有.等页面做出 ...
- 代码手写UI,xib和StoryBoard间的博弈,以及Interface Builder的一些小技巧
近期接触了几个刚入门的iOS学习者,他们之中存在一个普遍和困惑和疑问.就是应该怎样制作UI界面.iOS应用是非常重视用户体验的,能够说绝大多数的应用成功与否与交互设计以及UI是否美丽易用有着非常大的关 ...
- 关于代码手写UI,xib和StoryBoard
代码手写UI 这种方法经常被学院派的极客或者依赖多人合作的大型项目大规模使用.Geek们喜欢用代码构建UI,是因为代码是键盘敲出来的,这样可以做到不开IB,手不离开键盘就完成工作,可以专注于编码环境, ...
- nib文件的注册及加载
1,注册 [(UIView *)view registerNib:[UINib nibWithNibName:(NSString *)nibName bundle:(NSBundle *)bundle ...
- 什么是Nib文件?(Nib文件是一种特殊类型的资源文件,它用于保存iPhone OS或Mac OS X应用程序的用户接口)
Nib文件是一种特殊类型的资源文件,它用于保存iPhone OS或Mac OS X应用程序的用户接口.Nib文件是Interface Builder文档.通常您会使用Interface Builder ...
- 如何打开Nib文件
作者:ani_di 版权所有,转载务必保留此链接 http://blog.csdn.net/ani_di # 如何打开Nib文件 有段时间没有灌水,今天分享一个小技巧. nib文件是Cocoa Ap ...
- 在代码中控制UI界面
虽然Android推荐使用XML布局文件来控制UI界面,但如果开发者愿意,Android允许开发者完全抛弃XML布局文件,完全在Java代码中控制UI界面. 实例:用编程的方式开发UI界面 packa ...
- 在Team Foundation Server (TFS)的代码库或配置库中查找文件或代码
[update 2017.2.11] 最新版本的TFS 2017已经增加了代码搜索功能,可以参考这个链接 https://blogs.msdn.microsoft.com/visualstudioal ...
随机推荐
- kibana 版本kibana-4.3.1 修改地图
进入到安装目录下的src/ui/public/vislib/visualizations/目录 1.编辑_map.js文件 1 2 //url: 'https://otile{s}-s.mqcdn.c ...
- 文档生成工具doxygen+图像生成工具GraphViz
文档生成工具doxygen+图像生成工具GraphViz 虽然jdk自带的javadoc也很好用,不过使用doxygen+GraphViz 的组合可以生成许多强大的图(类图.协作图.文件包含/被包含图 ...
- 【转】C/C++程序员应聘常见面试题深入剖析
1.引言 本文的写作目的并不在于提供C/C++程序员求职面试指导,而旨在从技术上分析面试题的内涵.文中的大多数面试题来自各大论坛,部分试题解答也参考了网友的意见. 许多面试题看似简单,却需要深厚的基 ...
- February 29(模拟)
D - D Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu Submit Status P ...
- Android系统Surface机制的SurfaceFlinger服务的线程模型分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8062945 在前面两篇文章中,我们分析了Sur ...
- WinForm RDLC SubReport Step by step
最近在做的一个PO管理系统,因为要用到订单打印,没有用水晶报表,直接使用VS2010的Reporting.参考了网上的一些文章,但因为找到的数据是用于WebForm的,适配到WinForm有点区别,竟 ...
- UVA 10806 Dijkstra, Dijkstra.
题意: 从起点走到终点,然后从终点走到起点,其中不能同时走过相同的一条边,问你最小路径长度.先输入终点n,起点为1,接下来输入m,代表有m条边.每条边由起点,终点,长度组成. 分析: 求最小长度,还限 ...
- Information seeking letter, hard copy version
23 Roanoke Street Blacksburg, VA 24060 (540) 555-1123 K.Walker@vt.edu October 23, 20XY Mr. James G. ...
- log4net使用简介
平常我们在开发网站时,有一些比较重要的地方需要添加日志记录.一般日志记录分为两种:1)在数据库中添加一张日志表,用来记录用户操作并给用户提醒(用户可以看到). 2)在系统中添加一个日志文件,用来记录一 ...
- AutoFac初探
.net 4.0使用的DLL #region RegisterType注册 var builder = new ContainerBuilder(); builder.RegisterType< ...