iOS学习之UI可视化编程-XIB
一、Interface Builder可视化编程
1、Interface Builder简介:
- GUI:图形用户界面(Graphical User Interface,简称GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。
- Interface Builder(IB):是Mac OS X 平台下用于设计和测试图形用户界面的应用程序。代码和IB都可以生成GUI。
- 优势:IB能够使开发者简单快捷的开发出符合Mac系列操作系统的GUI。通常只需要通过简单的拖拽操作来构建GUI。IB使用Nib文件储存GUI资源,在需要的时候,Nib文件可以被快速的载入内存。
2、iOS可视化编程
- iOS下可视化编程分为两种方式:xib和storyBoard。
- 在使用xib和storyBoard创建GUI过程中,以XML文件格式存储在Xcode中,编译时生成nib的二进制文件。在运行时,nib文件被加载并且开始创建和实例化GUI元素。
二、xib简单实用
1、.xib创建
- xib通常以关联方式出现在工程文件中,即在被创建时是伴随一个类(UIKIT框架下的类)诞生的。如图所示:
- 关联xib后,视图控制器独有的初始化方法:
// 创建视图控制器,给window指定根控制器 // 程序编译时会将xib文件编译成nib的二进制文件,运行时加载nib文件 // nibName:当前控制器相关联的nib文件,如果写为nil,默认查找和控制器名相同的文件名,但是如果xib文件与控制器名不相同,则查找不到。 // bundle:获取程序的资源路径,如果写为nil,默认是主路径,因为iOS只有一个主路径,在mac端开发时必须写。 self.window.rootViewController = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:[NSBundle mainBundle]];
- 创建好后.xib文件的样式
2、控件关联
- 在可视化编程中,功能部分仍然需要依赖于代码,所以我们需要将控件和代码相关联起来。
- 插座变量:用于IB中的UI控件。
- IBOutlet:外联指针,连接插座变量和IB中的UI空间。
- 设置:选中控件,按住control,向接口部分中拖拽,即可关联。
- Connection:拖拽之后创建的类型(属性、方法、集合属性)。
- Object:绑定的对象。
- Name:方法名或者属性名字。
- Type:控件类型。
- Storage:控件的内存修饰参数。
3、事件关联
- 动作:用于响应UI控件的触发事件。IBAction,连接方法和IB中的UI控件。
- 设置:选中控件,按住control,向原类接口部分或者实现部分中拖拽,设置响应方法。
- Name:方法名。
- Type:方法中的参数类型。
- Event:触发方法的方式。
- Arguments:方法中携带的什么样的参数。
4、代理设置
- File's owner:文件的拥有者,即视图控制器。
- 设置:右键单击控件,连接代理变量和File's owner。
三、xib绘制单元格
1、自定义单元格
- 自定义单元格指的是UITableView的自定义cell。
- 通过xib可以快速的绘制cell。
- 新建UITableViewController子类,设置为根视图控制器。
- 新建一个UItableViewCell子类,勾选Also create XIB file。
- 设置cell的重用标识符
// 注册cell [self.tableView registerNib:[UINib nibWithNibName:@"CustomCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:identifier_cell];
// 返回cell - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier_cell forIndexPath:indexPath]; return cell; }
四、自动布局
1、自动布局
- 自动布局:autoLayout,不给View固定的位置,通过某些规则让View自己适应自己的位置。
- 自动布局中常用的四个选项
2、Stack
- UIStackView,可以管理多个视图。一次性为多个视图进行约束设置。
- Axis:子视图排布方向。
- Alignment:子视图对齐方式。
- Distribution:分布方式。(调整StackView的大小,切换选项观察)。
- Space:子视图的最小间距。
3、Align
- Align,设置视图的对齐方式。
- Leading Edges:左对齐。
- Trailing Edges:右对齐。
- Top Edges:上对齐。
- Bottom Edges:下对齐。
- Horizontal Centers:纵向中心对齐。
- Vertical Centers:横向中心对齐。
- BaseLines:基线对齐。
- Horizontally in Container:以屏幕的纵向中心线对齐。
- Vertically in Container:以屏幕的横向中心对齐。
- 两者结合使用可以让View的中心点和屏幕中心点对齐。
4、Pin
- Pin:设置视图的尺寸相关属性。
- 上面的四个方向的设置尺寸代表距离四个方向的最近的视图的距离。
- 如果对应方向没有视图,则视为对应的屏幕方向的距离。
- Constrain to margins选项表示是否留下20个点的位置。
- Width:视图的宽度。
- Height:视图的高度。
- AspectRatio:设置宽高比。
- 当选中一个以上的视图个数:
- Equal Width:两个视图等宽。
- Equal Height:两个视图等高。
5、Resolve Auto Layout Issues
- Resolve Auto Layout Issues:解决自动布局的问题。
- Selected Views:选中的View,不包含子视图。
- All Views in View:选中的View,包含子视图。
- Update Frames:更新位置信息。
- Update Constraints:更新约束信息。
- Add Missing Constraints:忽略约束不足的错误。
- Reset to Suggersted Constraints:重置被建议的约束。
- Clear Constraints:删除所有的约束。
iOS学习之UI可视化编程-XIB的更多相关文章
- iOS学习之UI可视化编程-StoryBoard
一.StoryBoard与xib 对比: 相同点:都属于IB编程的方式,可以快速构建GUI. 不同点:xib侧重于单文件(单独的控制器或者视图)编辑,storyboard侧重于多页面关联.storyb ...
- iOS学习33之可视化编程-StoryBoard
1. storyBoard与xib 1> 概述 iOS下可视化编程分为两种方式: xib 和 storyboard 在使用 xib 和 storyboard 创建 GUI 过程中,以 XML 文 ...
- iOS开发UIKit框架-可视化编程-XIB
1. Interface Builder 可视化编程 1> 概述 GUI : 图形用户界面(Graphical User Interface, 简称GUI, 又称图形化界面) 是指采用图形方式显 ...
- iOS学习32之UIKit框架-可视化编程-XIB
1. Interface Builder 可视化编程 1> 概述 GUI : 图形用户界面(Graphical User Interface, 简称GUI, 又称图形化界面) 是指采用图形方式显 ...
- Java学习疑惑(8)----可视化编程, 对Java中事件驱动模型的理解
我们编写程序就是为了方便用户使用, 我觉得UI设计的核心就是简洁, 操作过于繁琐的程序让很大一部分用户敬而远之. 即使功能强大, 但是人们更愿意使用易于操作的软件. 近年流行起来的操作手势和逐渐趋于成 ...
- IOS学习笔记之 Socket 编程
最近开始静心学习IOS编程,虽然起步有点晚,但有句话说的好:“如果想去做,任何时候都不晚”.所以在今天,开始好好学习IOS.(本人之前4年都是搞.Net的,java也培训过一年) 打算学IOS,从哪入 ...
- iOS学习之UI自定义cell
一.自定义Cell 为什么需要自定义cell:系统提供的cell满足不了复杂的样式,因此:自定义Cell和自定义视图一样,自己创建一种符合我们需求的Cell并使用这个Cell.如下图所示的这些Cell ...
- HNU_小中初数学学习软件(可视化编程)_结对项目总结与体会
前言 经过将近一周的共同努力,HnuLyx和我终于完成了项目,期间心酸苦辣,受益良多,请允许我一一道来. 问题(需求要求的
- ios可视化编程 UI高级 UI_13
一.简单的说,IB Xib就是拖控件编程,也可以说是可视化编程(所见即所得),使用Xib编程,相对于纯代码,可以省下大量的敲代码时间,从而提高程序的开发时间,Xcode 4 之后才可以在工程中直接使 ...
随机推荐
- ASPxGridView中批量提交及个别提交的写法
//获取chech box ID protected string GetProtoID() { string protoId = ""; //获取选中的记录Id List< ...
- CSS3之阴影
CSS3中新增属性-阴影,可以做出很多漂亮的效果. 文字阴影text-shadow text-shadow属性值的顺序: text-shadow: h-shadow v-shadow blur col ...
- PAT1030. Travel Plan
//晴神模板,dij+dfs,貌似最近几年PAT的的图论大体都这么干的,现在还在套用摸板阶段....估计把这及格图论题题搞完,dij,dfs,并查集就掌握差不多了(模板还差不多)为何bfs能自己干出来 ...
- JS常用的设计模式(14)—— 备忘录模式
备忘录模式在js中经常用于数据缓存. 比如一个分页控件, 从服务器获得某一页的数据后可以存入缓存.以后再翻回这一页的时候,可以直接使用缓存里的数据而无需再次请求服务器. 实现比较简单,伪代码: var ...
- github的入门使用
原文 http://www.eoeandroid.com/thread-274556-1-1.html [初识Github]首先让我们大家一起喊一句“Hello Github”.YEAH!就是这样. ...
- Android IOS WebRTC 音视频开发总结(二六)-- webrtc调用堆栈
本文主要是自己之前研究WebRTC代码结构时的一些资料(包括Android,iOS,PC),文章来自博客园RTC.Blacker,转载请说明出处. 1.WEBRTC模块:音频数据采集.发送.接收.播放 ...
- NC V6 安装目录各文件夹作用描述
ant:存放Apache Ant,用来执行EJB的构建. bin: 存放nc部署和系统监控等命令.configsys.log部署日志(包含NC中间件.WAS中间件等部署信息)以及NC_Client文件 ...
- dedecms 调用channel子栏目的id问题
dedecms 说明文档:http://www.dedecms.com/archives/templethelp/help/taghelp.htm {dede:channel type='son' t ...
- Oracle中rownum的用法
rownum是Oracle对查询结果进行顺序编号,第一行分配1,第二行2,以此类推.rownum不能以任何表的名称作为前缀. rownum这个伪字段可以用于控制返回的记录行数. 例如表:student ...
- Vue.js学习 Item7 -- 条件渲染与列表渲染
v-if 在字符串模板中,如 Handlebars,我们得像这样写一个条件块: <!-- Handlebars 模板 --> {{#if ok}} <h1>Yes</h1 ...