概述

在iOS的发展历程中,IOS开发经历了三种主要流派:使用代码手写UI及布局;使用单个xib文件组织viewController或者view;使用StoryBoard来通过单个或很少的几个文件构建全部UI。而在最近几年的开发中,苹果对 Storyboard 的开发力度也不断增强,添加了更多功能和特性,大大方便了界面的开发、适配以及提升代码性能。

我们来看看三种方式的主要区别:

手写页面和逻辑代码

如果你的目的是写一些可以高度重用的控件提供给其他开发者使用,那毫无疑问最好的选择应该是使用代码来完成UIView的子类.这样进一步的修改和其他开发者在使用时,都会方便不少.使用代码也是最为强大的,会有xib或者StoryBoard做不了的事情,但是使用代码最终一定能够完成所要的需求。

XIB

其实IB和xib是从iOS SDK初次面世开始就是捆绑在开发者工具套装内的内容了,而到了Xcode 4之后更被直接集成到了Xcode中成为了IDE的一部分. xib设计的一大目的其实是为了良好的MVC:一般来说,单个的xib文件对应一个ViewController,而对于一些自定义的view,往往也会使用单个xib并从main bundle进行加载的方式来载入.IB帮助完成view的创建,布局和与file owner的关系映射等一些列工作。

但是xib最大的问题在于xib中的设置往往并非最终设置,在代码中你将有机会覆盖你在xib文件中进行的UI设计.在不同的地方对同一个属性进行设置,这在之后的维护中将会是噩梦般的存在.因为其实IB还是有所局限的,它没有逻辑判断,也很难在运行时进行配置。

StoryBoard

简单理解来说,

IOS入门之StoryBoard相关推荐

  1. IOS开发入门之五——storyboard的使用(上)

    需要iOS开发视频资料可以加我微信: 1914532832  验证信息请注明:IOS开发 上节介绍了纯代码开发,就是所有页面全部用代码来写,纯代码开发缺点就是比较慢的,而且很不直观,需要在App运行后 ...

  2. iOS 入门——Hello World app

    iOS 入门--Hello World app 作为Mac重度使用者以及iOS小白一枚(匿),我将为iOS 10 构建我们的第一个iOS应用程序 (著名的"Hello World" ...

  3. (11)Xamarin.iOS - 新增iPhone storyboard

    原文 Xamarin.iOS - 新增iPhone storyboard 1. 开启Xamarin Studio 并建立新项目 专案类型为 iOS=>iPhone Storyboard => ...

  4. IOS 移除storyboard

    为什么80%的码农都做不了架构师?>>>    我是IOS新手,都说storyboard是个好东西,但是我搞了一会始终没有搞懂,并且我觉得学习一门语言,使用类似以前网页三剑客这种所见 ...

  5. IOS入门学习视频教程

    百度网盘:https://pan.baidu.com/s/1Ag2G-Fjyj6PMsTOLXRG0Ig 内容: 第一阶段:语言基础和iOS入门 iOS8 App开发快速入门 iOS开发语言 swif ...

  6. iOS入门指引系列(零)

    俗话说的是,万事开头难. 意思是开了头,再把一件事办下去就没有那么难了. 我相信每一个人当想入门一项新技能的时候都有这样的体会吧.特别是现在网络上各式各样的学习资料,文章,这些零星的资料反而让初学者迷 ...

  7. iOS入门、还是老手,都是值得收藏的一个资源文档

    这里写自定义目录标题 SwiftUI 资源 学习架构/模式相关开源框架 代码质量检查框架/工具 马上过年了,可以利用年假期间学习一下:对于老手来说,本文排版也可以优化,为了方便,对于github开源项 ...

  8. ios原生入门之storyboard页面绘制

    IOS使用storyboard绘制页面,使用block回传数据(老安卓开发搞IOS系列),demo源码点这里,演示效果如下 一.新建IOS项目 选择App -> Storyboard.Objec ...

  9. iOS 入门开发踩坑实录

    其实人生也没有什么道理可讲,但是我们不必丧气,还是要期待,人生有奇遇. 前言 苹果开发者:iOS Developer 最近因为工作需要要开始搞iOS了,简单记录下我收集和学习的过程. 学习资料准备 组 ...

  10. IOS开发之Storyboard应用

    制作一个Tab类型的应用 制作一个表格视图 原型表格单元 设计自定义的原型单元格 为原型单元格设置子类 故事版(Storyboard)是一个能够节省你很多设计手机App界面时间的新特性,下面,为了简明 ...

最新文章

  1. java工程化_(二)Java工程化--Maven实践(示例代码)
  2. python 中参数 ,解包和变量的入门
  3. c支限界算法语言n皇后问题分,算法(八)-回溯法-N皇后问题
  4. Hibernate- QBC-基本查询
  5. visual stdio打开之后与屏幕尺寸不匹配_柔和点亮桌面,让眼睛更舒服,雷神屏幕挂灯L1体验...
  6. DotNet微信公众号简介
  7. 对if...else if...的理解
  8. 神通数据库打开服务_数据库周刊30丨数据安全法草案将亮相;2020数据库产业报告;云南电网上线达梦;达梦7误删Redo…...
  9. jQuery报错:Uncaught ReferenceError: $ is not defined
  10. Linux例行性工作排程 (crontab)
  11. JAVA的图形性能,慢在哪里之分析
  12. 微积分是研究连续变化的数学理论
  13. 字符编码——简体中文编码中区位码、国标码、内码、外码、字形码的区别及关系
  14. 求你们不要再问我录屏软件了,这些电脑、手机录屏软件全给你们!
  15. Automation Anywhere, Blue Prism, UiPath, Pega, 码栈功能对比大全
  16. OSS文件存储方案-阿里云
  17. 操作系统以及Linux起源
  18. feiyanghaotian(飞扬浩天)的csdn博客
  19. mysql audit plugin_MySQL Audit Plugin的简单应用
  20. php省市区中文截取

热门文章

  1. 微信朋友圈怎么设置对单人开放?
  2. IntelliJ IDEA 在方法大括号中{}点击回车多出一个},如何取消
  3. Esp8266(NodeMCU)物联网芯片的基本简介
  4. Java之网络编程(二)UDP
  5. 定理在数学中的简写形式_初中数学定义、定理汇总
  6. 网络适配器突然消失的解决办法
  7. 数据透视表:多重合并计算数据区域
  8. Unity导航小地图制作
  9. 软件测试工程师的职业技能分析
  10. layui 的文件上传组件的使用