一、StoryBoard与xib

  • 对比:
  • 相同点:都属于IB编程的方式,可以快速构建GUI。
  • 不同点:xib侧重于单文件(单独的控制器或者视图)编辑,storyboard侧重于多页面关联。storyboard可以直观的梳理出页面间的逻辑,并且所有页面跳转逻辑均可在-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender;方法完成,方便界面间数据统一管理。
  • 注意事项:在AppDelegate的-application:didFinishLaunchingWithOptions:方法中不要再用代码初始化一个window。将创建好的storyboard在应用程序配置General中设置为MainInterface。
  • 利用storyboard绘制自定义单元格要注意以下几点:
  • 创建自定义cell时选中左侧TableViewCell。
  • 绘制自定义UI界面。
  • 设置重用标识符。
  • 将storyboard文件关联至对应的UITableViewController和UITableViewCell类(自己创建的类)。
  • 在UITabelViewController中完成代码书写。

  注意:cell不在需要注册

二、页面跳转

  1、storyboard页面跳转分为两种

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

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

  2、方式

  push : push出下一个界面.

  modal : 模态出下一个界面

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

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

三、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页面跳转会走这个方法
- (  if ([segue.identifier isEqualToString:@"welcome"]) {
    // 属性传值(从前往后传)
    // 获取到要跳转的控制器对象
    WelcomeViewController *welcomeVC = segue.destinationViewController;
    // 2.设置属性
    welcomeVC.textString = self.userTextField.text;
    }
}

四、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学习之UI可视化编程-StoryBoard的更多相关文章

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

    1. storyBoard与xib 1> 概述 iOS下可视化编程分为两种方式: xib 和 storyboard 在使用 xib 和 storyboard 创建 GUI 过程中,以 XML 文 ...

  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. iOS学习之UI自定义cell

    一.自定义Cell 为什么需要自定义cell:系统提供的cell满足不了复杂的样式,因此:自定义Cell和自定义视图一样,自己创建一种符合我们需求的Cell并使用这个Cell.如下图所示的这些Cell ...

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

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

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

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

随机推荐

  1. webview渲染流程

    文档标记说明 ################# 消息边界 +++++++++++++++++ 区域分隔 $$$$$$$$$$$$$$$$$ 线程边界 ~~~~~~~~~~~~~~~~~ 进程边界 - ...

  2. STL容器迭代器失效分析

    连续内存序列容器(vector, string, deque) 对于连续内存序列STL容器,例如vector,string,deque,删除当前iterator会使得后面所有的iterator都失效, ...

  3. nagios架构及windows,linux客户端配置

    Linux下Nagios的安装与配置 一.Nagios简介 Nagios是一款开源的电脑系统和网络监视工具,能有效监控Windows.Linux和Unix的主机状态,交换机路由器等网络设置,打印机等. ...

  4. excel快速复制大量公式的方法

    excel中快速复制公式的方法有很多,适合复制大量公式的方法有两个,一个是拖动该单元格右下角,向下拖动即可快速填充下面的单元格,实现公式的快速复制.这种方法适合数据量不大的时候使用,如果数据很多,有2 ...

  5. 【MariaDB】MariaDB编译参数

    参考: http://wangfeng7399.blog.51cto.com/3518031/1393146?utm_source=tuicool http://www.phperz.com/arti ...

  6. Jmeter笔记1:使用Badboy录制脚本,作为JMeter测试的素材

    接触Badboy,是因为JMeter要引用Badboy导出的脚本 Badboy的录制提供两个模式:Request(默认模式) 和navigation模式.点击下图N,切换模式:但是要导出到Jmeter ...

  7. Java druid

    1.ConnectionFactory (添加引用:druid-1.0.1.jar) package nankang.test; import java.sql.Connection; import ...

  8. 彻底解决_OBJC_CLASS_$_某文件名", referenced from:问题转

    最近在使用静态库时,总是出现这个问题.下面总结一下我得解决方法: 1. .m文件没有导入   在Build Phases里的Compile Sources 中添加报错的文件 2. .framework ...

  9. Windows下WEB服务器的选择与搭建

    本文主要基于支持perl的web服务器的选择. 一直基于web开发,服务器都是linux下使用webmin搭建的,惭愧的说一句,这么多年,也好好研究过WEB服务器,单从这个角度,是不是可以反应出web ...

  10. JQuery.tmpl()的用法

    动态请求数据来更新页面是现在非常常用的方法,现在通过Ajax请求返回的数据更多的是json对象, 为了解决js动态拼接数据这方面的问题,JavaScript 也可以利用模版来解决这些问题,比如基于 j ...