zoukankan      html  css  js  c++  java
  • XIB

    XIB

    Storyboard 和 xib

    1.1 Storyboard故事板 Storyboard的是 ios5 的新特征 目的是代替历史悠久的xib.Storyboard 是多个xib文件集合的描述文件,也采用xml格式.如果要使用Storyboard特性,那么AppDelegate必须继承自UIResponder类, 之前则是继承自NSObject类的,而且必须有一个不是UIOutlet类的Window属性声明才可以 

    >> 注意点: 当我们需要更换Stoard 我们需要把infor.plist Main interface 里的东西 删除 否则会报错

    >>优点 : stroryboard 可以帮助我们解决很多重复的跳转方法 可以节省很多时间.代码量少 开发周期短.可以看到每个ViewController的布局样式 也可以明确地知道各个ViewController的跳转关系

    >>缺点 :团队开发不便

    1.2 storyboard 的使用

    // 1.创建窗口

        self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];

        // 2.创建控制器[storyboard故事板]

        // 2.1 先加载故事板文件

        UIStoryboard *boss = [UIStoryboard storyboardWithName:@"CZBoss" bundle:nil];

        // 2.2 实例化初始化控制器[带箭头]

    //UIViewController *vc = [boss instantiateInitialViewController];

        //根据表示符,实例化控制器

        UIViewController *vc = [boss instantiateViewControllerWithIdentifier:@"blue"];

        // 3.设置窗口的根控制器

        self.window.rootViewController = vc;

        // 4.把窗口作为主窗口并可见

        [self.window makeKeyAndVisible];

     

    2 Xib

    > >Xcode.3.0 之前 Interface Build 创建的文件是二进制nib nib代表Next interface Builder 因为nib是二进制不好管理 也不方便版本控制  xcode.3.0 之后 interface builder 使用了一种新的文件格式xib xib的意思是XML interface builder, xib 使用了XML 在工程编译的时候在转换成nib

    >> xcode 4.0 之前 interface Builde 是一个独立软件, 而Xcode  4.0 是个大版本 界面被重新设计 interface Builder 被直接集成到xcode 

    注意点: 当我们用xib 会遇到 xib 添加到控制器view 中有时程序会崩溃 

    错误提示: unrecognized selector sent to instance 0x7ffae1c1b680'

    这时我们应注意xib里控件有几个 ,我们加载xib 会以数组的形式加载 xib对象是按照放进去的顺序排列的

    >> Xib 的优点 :

    > 开发速度快 

    > 在版本管理上和纯代码的差异并不是很大 易读易维护

    缺点 :

    xib中设置往往并非最终设置 UI设计会被代码所覆盖

    (如果选择xib,那么要尽量将xib的工作和代码的工作隔离开来:能够使用xib完成的内容就统一使用xib 来做 而不要说三个label其中俩个在xib设置字体 而另一个却在代码设置 尽量仅保持必要的 较少的IBOutelet 和IBAction)

     

    3 xib 和 Storyboard 的区别

    xib 是轻量级的

    Storyboard 是重量级的

    共同点 : 都用来描述软件的界面 都用Interface Buile工具编译

    不同点 :

    xib是轻量级 用来描述局部的UI界面 

    Storyboard 是重量级 用来描述整个软件的多个界面 并且 能展示多个界面之间的跳转关系

    4 补充:

    一、Interface Builder介绍

    1、概念

    Interface Builder苹果平台下用于设计和测试用户界面的应用程序,简称IB。简单理解,IB就是提供可视化设计环境。

    2、作用及特点

    IB给用户提供了可视化的操作界面,可以很方便并且直观的设计出用户界面元素。IB提供的拖放面板,使用拖拽就可以方便的构建出UI界面。使用IB是可选的,因为所有控件都可以使用代码来实现。

    3、集成

    Interface Builder工具是在iPhone SDK中提供的,应用于Mac OC 和iOS应用开发,从Xcode4开始,集成到了其中(之前是独立的软件)。

    4、Nib元素

    (1) Nib文件是保存由Interface Builder创建的对象及对象间关系的一种资源文档,Nib 是 NeXT Interface Builder的缩写。

    (2)早期,IB使用Nib文件存储控件资源,Nib本身是二进制文件。

    5、Xib的出现

    (1)自从Xcode 3.0 开始,苹果提供Xib文件构建UI元素,本质是XML文本文件,可以很方便的编辑。同时Xib可以编译为Nib。

    (2)Nib 和 Xib都是 Interface Builder 的图形界面设计文档。

    二、xib介绍

    1、简介

    (1)IB和xib是从iOS SDK初次面世开始就是捆绑在开发者工具套装内的内容了(独立),而到了Xcode 4之后更被直接集成到了Xcode中成为了IDE的一部分。

    (2)Xib是XML格式的文件。

    (3)UIViewController生命周期函数loadView之前,Xib会转化成可执行的nib文件

    2、使用

    (1)通过xib加载控件

    <1>loadNibNamed 方法

    (2)通过xib加载控制器

    <1>initWithNibName: bundle:方法  (如果xib和控制器名字相同或近似,可以不用实例化)

    <2>设置xib的身份检查器中的关联

    <3>设置File's Owner ,拖动到View上

    3、优势

    (1)相比纯代码,大大缩短了UI界面搭建的时间,提高了开发效率。

    (2)可视化的效果,更直观的设计。

    4、问题

    (1)Xib无法进行逻辑判断。

    (2)很难在运行时进行配置,Xib在使用时,经常要通过代码的补充,来完成功能实现。

    (3)多人开发中通过代码修改Xib的属性,可能造成混乱和不可预计的问题。

    (4)从程序员角度,可读性较差。不利于统一管理和维护。使用SVN等代码管理工具时,Xib会产生无用的记录,以及版本更新的缺陷。从Xcode5开始,苹果对这一方面问题进行了优化,比如在版本管理上,也可以很好的查找修改记录了。

    5、几个和Xib相关的方法

    (1)loadNibNamed:    owner:   options    加载Xib控件

    (2)aweakFromNib 通过Xib加载控件,会调用关联类中的此方法

    (3)initWithCoder    通过Xib加载控件,会调用关联类中的此方法

    三、storyBoard

    1、简介

    (1)storyboard在IOS5引入,是xib集合的描述文件,本身也是xml格式。

    (2)提供了nib 和 xib 的集中管理,更直观的展现出他们的关系。

    (3)通过可视化界面,设计UI的方式。

    2、特点

    (1)提供页面间新的挑战方式:segue

    (2)描述了若干窗体、组件、Auto Layout 约束等关键信息。

    (3)默认storyBoard作为程序的主入口

    (4)Auto Layout 跟 StoryBoard 的配合使用,可以大幅提高 UI 开发效率,并准确提供出各控件的位置和约束。

    (5)storyBoard中是展现控制器之间的关系。

    3、优势

    (1)提高UI设计效率的同时,可以很清晰的反映出控制器之间的跳转关系。

    (2)在storyBoard中可以提供简单的页面跳转,拖拽就可以设置成功。

    (3)UI设计中可以实时直观的反映设计效果,由于代码量较少,所以,bug产生的几率也较低(代码实现UI需要大量代码)。

    4、使用

    (1)通过storyBoard加载控制器

    <1> 创建UIStoryboard 对象: storyboardWithName:

    <2> 通过storyBoard对象创建

    instantiateInitialViewController;

        instantiateViewControllerWithIdentifier;

    (2)通过storyBoard加载视图,

    <1> 在Prototype cells 中设置样式,和reusedID,可以实现cell重用。

    <2> collection中的item注册,也可以通过Prototype cells

    5、问题

    (1)存在Xib设计中相同的一些问题,比如维护的不方便,多人开发的不便利,没有逻辑判断等等。

    (2)最大问题就是多人协作开发,UI控件都在一个storyBoard文件中。

    (3)因为是多个Xib,多以会更大一些,加载会慢一些。

    (4)由于没有使用代码设计控件,所以重用问题不灵活。

  • 相关阅读:
    Remove Duplicates from Sorted Array 分类: Leetcode(线性表) 2015-03-25 16:10 35人阅读 评论(0) 收藏
    Binary Tree Preorder Traversal 分类: Leetcode(树) 2015-03-24 17:04 28人阅读 评论(0) 收藏
    深度学习基础(七)Self-Taught Learning to Deep Networks 分类: 深度学习 2015-03-20 21:27 36人阅读 评论(0) 收藏
    深度学习基础(六)Self-Taught Learning 分类: 深度学习 2015-03-20 14:55 24人阅读 评论(0) 收藏
    Remove Duplicates from Sorted List 分类: Leetcode(链表) 2015-03-03 21:16 30人阅读 评论(0) 收藏
    Partition List 分类: Leetcode(链表) 2015-03-03 21:13 29人阅读 评论(0) 收藏
    深度学习基础(五)Softmax Regression 分类: 深度学习 2015-02-28 10:28 42人阅读 评论(0) 收藏
    Add Two Numbers 分类: Leetcode(链表) 2015-02-17 11:09 43人阅读 评论(0) 收藏
    Gas Station 分类: Leetcode(线性表) 2015-02-15 11:06 40人阅读 评论(0) 收藏
    jsp页面中HTML注释与jsp注释的区别
  • 原文地址:https://www.cnblogs.com/xuan-yuan/p/5430404.html
Copyright © 2011-2022 走看看