1. storyBoard与xib

 1> 概述

  • iOS下可视化编程分为两种方式: xib 和 storyboard
  • 在使用 xib 和 storyboard 创建 GUI 过程中,以 XML 文件格式存储在 Xcode 中,编译时生成 nib 的二进制文件. 在运行时, nib 文件被加载并且开始创建和实例化 GUI 元素

 2> 对比

  相同点:都属于 IB 编程的方式, 可以快速构建 GUI

  不同点:xib 侧重于单文件(单独的控制器或者视图)编辑, storyboard 侧重于多页面关联.  storyboard 可以直观的梳理出页面间的逻辑, 并且所有页面跳转逻辑均可在 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 方法完成, 方便界面间数据统一管理

 3> storyboard 注意事项

  • 在 AppDelegate 的 -application: didFinishLaunchingWithOptions: 方法中不要再用代码初始化一个 Window。
  • 将创建好的 storyboard 在应用程序配置 General 中设置为 Main Interface。
  • 视图添加与控制和 IB 开发 样。

 4> storyboard 创建视图控制器

  在 storyboard 中 controller 可以设置标识, 通过标识在 storyboard 中创建视图控制器对象。

  [self.storyboard instantiateViewControllerWithIdentifier: @"identifier"];

 5> storyboard 侧重于页面控制

  使 storyboard 可以方便快捷的直接拖拽出一个视图控制器, 其中包括 View Controller、Navigation Controller、Table View  Controller 等等。

  我们可以通过选中控制器, 修改下图所示的选项, 或者直接移动表示程序入口的箭头,来观察各控制器的效果

 6> 利用 storyboard 绘制自定义单元格

  storyboard 绘制单元格的时候要注意以下几点:

  • 创建自定义 cell 时选中左侧 TableViewCell。
  • 绘制自定义 UI 界面。
  • 设置重用标识符。
  • 将 storyboard 文件关联至对应的 UITableViewController 和 UITableViewCell 类(自己创建的类)。
  • 在 UITableViewController 中完成代码书写:设置 section 和 row 数量, 设置 cell , 根据实际情况调整 cell 的高度。

  注意: cell 不再需要注册。

2. 页面跳转

 1> storyboard 页面跳转分为两种

  ① 代码方式 : 使用代码通过控制器识别来跳转. 比如在当前页面的某一个事件中跳转到一个标识为 "customVC" 的控制器页面中: [self performSegueWithIdentifier:@"customVC" sender:nil];

  ② 连线方式 : 直接使用拖拽可以给按钮连线关联两个页面: 选中按钮, 按住 control ,从按钮向下一级页面连线. 按钮不需要添加响应方法.

 2> 方式

  push : push出下一个界面.

  modal : 模态出下一个界面

  custom : 自定义,需要我们自己实现页面跳转, 需要自定义segue.

  注意: 以上是 sizeclasses 未勾选的状态下的三种方式. 在默认状态下有很多种, 其中包括show, showDetail等等.

3. segue

 1> 概述

  segue: 可视化编程中连接两个页面的线条,称之为 segue.

  iPhoneGUI 开发中 segue 主要有三种类型, 包括 push, model, custom.

  其中 custom 需要我们自定义 segue 来完成页面间跳转.

  segue 有三个重要属性: 标识符, 源控制器, 目标控制器.

 2> 自定义 segue

  步骤一: 新建一个类继承自 UIStoryboardSegue

#import <UIKit/UIKit.h>

@interface CustomSegue : UIStoryboardSegue

@end

  步骤二: 选中一个控制器,按住 control 鼠标辅助完成连线, 选择 custom

  步骤三: 选中自定义 segue, 设置 segue 的 identifier 以及关联类

  步骤四: 在 segue 类里面重写 perform 方法(界面跳转默认的执行方法), 自定义跳转效果

 #import "CustomSegue.h"
#import "LoginViewController.h"
#import "CustomViewController.h" @implementation CustomSegue // 重写系统方法,页面跳转会走这个方法
- (void)perform { // 1. 获取源控制器
LoginViewController *loginVC = self.sourceViewController;
// 2.获取目标控制器
CustomViewController *customVC = self.destinationViewController; // 3.自定义页面切换效果
[UIView transitionFromView:loginVC.view toView:customVC.view duration: options:UIViewAnimationOptionTransitionCurlUp completion:^(BOOL finished) { // 动画完成后的操作
[loginVC.navigationController pushViewController:customVC animated:NO]; }]; } @end

 3> 界面传值

  storyboard界面间跳转会执行

  - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 方法, 方便界面间数据统一管理.

  依据不同的标识符来完成数据处理.

 // storyboard页面跳转会走这个方法
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([segue.identifier isEqualToString:@"welcome"]) { // 属性传值(从前往后传)
// 获取到要跳转的控制器对象
WelcomeViewController *welcomeVC = segue.destinationViewController;
// 2.设置属性
welcomeVC.textString = self.userTextField.text;
}
} 

4. sizeClasses屏幕适配

 在实际开发当中程序员不可能只考虑一种尺寸, 有时需要做必要的屏幕适配工作, 甚至还会遇到横竖屏时不同的布局方式, 在可视化编程中, sizeClasses 就是因此而诞生的.

 sizeClasses 可以根据不同的选择,筛选出不同的布局情况来绘制 UI 

 设备对应关系如下:

  • iPhone4S, iPhone5/5S, iPhone6, iPhone6s

   竖屏: (w:Compact h:Regular)

   横屏: (w:Compact h:Compact)

  • iPhone6 Plus/iPhone6s Plus

   竖屏: (w:Compact h:Regular)

   横屏: (w:Regular h:Compact)

  • iPad

   竖屏: (w:Regular h:Regular)

   横屏: (w:Regular h:Regular)

iOS学习33之可视化编程-StoryBoard的更多相关文章

  1. iOS学习之UI可视化编程-StoryBoard

    一.StoryBoard与xib 对比: 相同点:都属于IB编程的方式,可以快速构建GUI. 不同点:xib侧重于单文件(单独的控制器或者视图)编辑,storyboard侧重于多页面关联.storyb ...

  2. iOS学习之UI可视化编程-XIB

    一.Interface Builder可视化编程 1.Interface Builder简介: GUI:图形用户界面(Graphical User Interface,简称GUI,又称图形用户接口)是 ...

  3. iOS开发UIKit框架-可视化编程-XIB

    1. Interface Builder 可视化编程 1> 概述 GUI : 图形用户界面(Graphical User Interface, 简称GUI, 又称图形化界面) 是指采用图形方式显 ...

  4. Java学习疑惑(8)----可视化编程, 对Java中事件驱动模型的理解

    我们编写程序就是为了方便用户使用, 我觉得UI设计的核心就是简洁, 操作过于繁琐的程序让很大一部分用户敬而远之. 即使功能强大, 但是人们更愿意使用易于操作的软件. 近年流行起来的操作手势和逐渐趋于成 ...

  5. IOS学习笔记之 Socket 编程

    最近开始静心学习IOS编程,虽然起步有点晚,但有句话说的好:“如果想去做,任何时候都不晚”.所以在今天,开始好好学习IOS.(本人之前4年都是搞.Net的,java也培训过一年) 打算学IOS,从哪入 ...

  6. iOS学习之移除Main.storyboard

    每次使用Single View Application模板创建工程之后,总是会有一个Main.storyboard文件,那么,当我们使用代码布局的时候,很显然是不需要它的.那么,如何将它从工程中移除呢 ...

  7. HNU_小中初数学学习软件(可视化编程)_结对项目总结与体会

    前言 经过将近一周的共同努力,HnuLyx和我终于完成了项目,期间心酸苦辣,受益良多,请允许我一一道来. 问题(需求要求的

  8. 【原】iOS学习之UIStoryboardSegue解析

    在 Storyboard 的可视化编程中,跳转界面就是按住 Ctrl 使用鼠标头一条连线就可以解决,相当的简单!本篇博客主要就是介绍这条连线,在iOS中,这条连线也是一个对象,也有其自己的初始化方法和 ...

  9. iOS学习之flappyBird游戏的实现

    导言 在本人还是学生的时候,flappyBird这款游戏非常火爆,最后等到Android版的出来之后,也是很痴迷的玩了一把.可是,本人游戏天赋一直平平,几度玩得想摔手机.本文主要介绍如何开发iOS平台 ...

随机推荐

  1. Lattice 的 DDR IP核使用调试笔记之DDR 的 仿真

    —— 远航路上ing 整理于 博客园.转载请标明出处. 在上节建立完工程之后,要想明确DDR IP的使用细节,最好是做仿真.然后参考仿真来控制IP 核. 仿真的建立: 1.在IP核内的以下路径找到以下 ...

  2. 昨天一日和彭讨论post请求数据的问题

    上午写了一个for循环,下午与同学视频才知道没有解决根本问题,接口是url单个的数据请求,而导入的是多个员工的考勤数据也就是要有多个请求同时发出,利用这个做法是有链接超时的情况,所以昨天晚上彭为了导入 ...

  3. windows 下的tcping 小插件

    如果把插件放在根目录 就要能过cmd切换到根目录 cd \ c:\>tcping -d -t -i 0.06 www.baidu.com 将文件放在c:\WINDOWS\system32目录下, ...

  4. c++11的初始化

    c++11 中类型初始更加方便 比如     vector<int> vec = {1,2,3}; vector<int> vec{1,2,3}; map<string, ...

  5. MongoDB的介绍和使用场景(1)

    MongoDB 是一个高性能,开源,无模式的文档型数据库,是当前 NoSQL 数据库产品中最热门的一种.它在许多场景下可用于替代传统的关系型数据库或键/值存储方式,MongoDB 使用 C++开发.M ...

  6. poj 1002:487-3279(水题,提高题 / hash)

    487-3279 Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 236746   Accepted: 41288 Descr ...

  7. 在Asp.Net MVC中实现RequiredIf标签对Model中的属性进行验证

    在Asp.Net MVC中可以用继承ValidationAttribute的方式,自定制实现RequiredIf标签对Model中的属性进行验证 具体场景为:某一属性是否允许为null的验证,要根据另 ...

  8. 在Eclipse中用图形界面的方式获取Salesforce中Object的Query语句

    对Salesforce中的Object进行相应的Query是必不可少的操作,大家可以去这个链接去看看官网的解读  http://docs.database.com/dbcom/en-us/db_sos ...

  9. tab_切换

    记忆: 一.这里用到了jQuery遍历---filter()方法: filter() 方法将匹配元素集合缩减为匹配指定选择器的元素. 二.HTML DOM hash属性 hash 属性是一个可读可写的 ...

  10. phpstorm的安装、破解、和汉化

    1.去官网下载最新版安装. 2.完成选择购买软件,下面选择中间那个账户方法License server,把这条链接复制下去:http://idea.qinxi1992.cn 3.下载汉化包resour ...