iOS学习之UI可视化编程-StoryBoard
一、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的更多相关文章
- iOS学习33之可视化编程-StoryBoard
1. storyBoard与xib 1> 概述 iOS下可视化编程分为两种方式: xib 和 storyboard 在使用 xib 和 storyboard 创建 GUI 过程中,以 XML 文 ...
- iOS学习之UI可视化编程-XIB
一.Interface Builder可视化编程 1.Interface Builder简介: GUI:图形用户界面(Graphical User Interface,简称GUI,又称图形用户接口)是 ...
- iOS开发UIKit框架-可视化编程-XIB
1. Interface Builder 可视化编程 1> 概述 GUI : 图形用户界面(Graphical User Interface, 简称GUI, 又称图形化界面) 是指采用图形方式显 ...
- Java学习疑惑(8)----可视化编程, 对Java中事件驱动模型的理解
我们编写程序就是为了方便用户使用, 我觉得UI设计的核心就是简洁, 操作过于繁琐的程序让很大一部分用户敬而远之. 即使功能强大, 但是人们更愿意使用易于操作的软件. 近年流行起来的操作手势和逐渐趋于成 ...
- IOS学习笔记之 Socket 编程
最近开始静心学习IOS编程,虽然起步有点晚,但有句话说的好:“如果想去做,任何时候都不晚”.所以在今天,开始好好学习IOS.(本人之前4年都是搞.Net的,java也培训过一年) 打算学IOS,从哪入 ...
- iOS学习之移除Main.storyboard
每次使用Single View Application模板创建工程之后,总是会有一个Main.storyboard文件,那么,当我们使用代码布局的时候,很显然是不需要它的.那么,如何将它从工程中移除呢 ...
- iOS学习之UI自定义cell
一.自定义Cell 为什么需要自定义cell:系统提供的cell满足不了复杂的样式,因此:自定义Cell和自定义视图一样,自己创建一种符合我们需求的Cell并使用这个Cell.如下图所示的这些Cell ...
- HNU_小中初数学学习软件(可视化编程)_结对项目总结与体会
前言 经过将近一周的共同努力,HnuLyx和我终于完成了项目,期间心酸苦辣,受益良多,请允许我一一道来. 问题(需求要求的
- 【原】iOS学习之UIStoryboardSegue解析
在 Storyboard 的可视化编程中,跳转界面就是按住 Ctrl 使用鼠标头一条连线就可以解决,相当的简单!本篇博客主要就是介绍这条连线,在iOS中,这条连线也是一个对象,也有其自己的初始化方法和 ...
随机推荐
- 学习联系 Java阶乘相关练习
题目一:一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度 double hou = 0.00008; for (int i = 1; i > 0; i++) { hou = ...
- python字典的常用操作方法
Python字典是另一种可变容器模型(无序),且可存储任意类型对象,如字符串.数字.元组等其他容器模型.本文章主要介绍Python中字典(Dict)的详解操作方法,包含创建.访问.删除.其它操作等,需 ...
- codevs 1049 棋盘染色
题目描述 Description 有一个5×5的棋盘,上面有一些格子被染成了黑色,其他的格子都是白色,你的任务的对棋盘一些格子进行染色,使得所有的黑色格子能连成一块,并且你染色的格子数目要最少.读入一 ...
- [drp 8]get和post的区别,以及乱码问题的解决
导读:不管是之前做.NET还是现在做Java的项目,都有涉及到get和post请求,第一次遇到的时候,应该是在人事系统的时候,那时候说要总结,结果一直没有总结.现在,做一个初步的总结,连着总结一下提交 ...
- 在PHP5.3以上版本运行ecshop和ecmall出现的问题及解决方案
ecshop 问题一:商城首页报错 Strict Standards: Only variables should be passed by reference in D:\wamp\ecshop\i ...
- sql 截取字符串第一次出现字符之前的数据
截取sql 第一次出现字符之前的数据 (select left( a.ChangeProductName,charindex(',', ChangeProductName)-1)) as Chang ...
- 【IHttpHandler】IHttpModule实现URL重写
1.用自定义IHttpModule实现URL重写 一般来说,要显示一些动态数据总是采用带参数的方式,比如制作一个UserInfo.aspx的动态页面用于显示系统的UserInfo这个用户信息表的数据, ...
- Oracle笔记 十二、PL/SQL 面向对象oop编程
------------------------抽象数据类型----------- --创建地址类型,一定要加as object,还可以在类型中加过程或方法 create or replace typ ...
- UML类图与类的关系详解
摘自:http://www.uml.org.cn/oobject/201104212.asp UML类图与类的关系详解 2011-04-21 来源:网络 在画类图的时候,理清类和类之间的关系是重点.类 ...
- Windows 2008修改密码策略方法
Windows Server 2008默认强制要求定期更改密码,这个功能有时实在是让人烦不胜烦,适当情况下可以考虑关闭. 方法如下: 1.按windows键+R(或者点开始---动行)打开运行窗口,输 ...