iOS学习32之UIKit框架-可视化编程-XIB
1. Interface Builder 可视化编程
1> 概述
GUI : 图形用户界面(Graphical User Interface, 简称GUI, 又称图形化界面) 是指采用图形方式显示的计算机操作用户界面。
Interface Builder (简称IB) : 是MAC OS X 平台下用于设计和测试图形用户界面 (GUI) 的应用程序。代码 和 IB 都可以生成 GUI。
优势: IB 能使开发者简单快捷的开发出符合Mac系列操作系统的GUI。通常你只需要通过简单的拖拽操作来构建UI就可以了。IB 使用Nib文件存储 GUI 资源,在需要的时候,Nib文件可以被快速地载入内存。
2> iOS可视化编程
iOS下可视化编程分为两种方式:xib 和 storyBoard
在使用 xib 和 storyBoard 创建 GUI 过程中,以 XML文件格式存储在Xcode中,编译时生成 nib 的二进制文件。在运行时,nib 文件被加载并且开始创建和实例化GUI元素
2. xib创建及使用
1> 概述
xib 创建 .xib 文件,包括视图布局,以XML格式存储。
程序运行后,.xib 文件中的内容编译为.nib 文件(二进制文件),存储在工程包中
.xib 通常以关联方式出现在工程文件中,即在被创建时是伴随一个类(UIKit框架下的类)诞生的
2> .xib创建
视图控制器独有初始化方法
- (instancetype)initWithNibName:(NSString *)nibNameOrNib bundle:(NSBundle *)nibBundleOrNil
nibNameOrNib:当前控制器相关联的nib文件,如果写nil默认为同名文件
nibBundleOrNil:当前应用程序包所在文件,如果写nil默认为mainBundle
在我们使用init初始化(或者new直接创建)控制器的时候,会自动执行控制器的此方法,参数均为默认值执行,所以可不写
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 创建window
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
// 程序编译时,会将xib文件编译成nib的二进制文件,运行时加载nib文件
// NibName:当前控制器的相关联的nib文件, 如果写为nil,默认查找和控制器名相同的文件名,但是如果xib文件与控制器名不同,则查不到
// bundle:获取程序资源路径,如果写为nil,默认是主路径,因为iOS只有一个主路径,在mac端开发时必须写
// 创建根视图
RootViewController *rootVC = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:[NSBundle mainBundle]];
self.window.rootViewController = rootVC;
return YES;
}
3> 选项卡
在Xcode工具栏(快捷键command + option(alt) + 0)管理者一组选项卡,用以对Xcode中文件(类文件或者IB文件)进行设置和描述。
在选中IB文件的情况下Xcode会有六个标签分别负责对选中的内容的信息查看和操作,包括文件基本信息、快速帮助、属性设置等。
4> 插座变量(Outlet)
- 插座变量:用于控制IB中的UI控件。
IBOutlet:外联指针,连接插座变量和IB中的UI控件。
- 设置:选中控件,按住control , 向接口部分中拖拽。
Connection: 拖拽之后创建的类型(属性、方法、集合属性)。
Object:绑定的对象。
Name: 法名或者属性名字。
Type:控件类型。
Storage:控件的内存修饰参数。
5> 事件关联(IBAction)
- 动作,用于响应UI控件的触发事件。
IBAction,连接方法和IB中的UI控件。
- 设置,选中控件,按住 ,向原类接 部分或者实现部分中 拖拽,设置响应 法。
Name :方法名。
Type :方法中的参数类型。
Event : 触发方法的方式
Arguments :方法中携带的什么样的参数。
6> 代理设置
- File’s owner : 文件的拥有者,即视图控制器。
- 设置:右键单击控件,连接代理变量 和 File’s owner
- 注意 :在拖拽的时候必须拖拽到 File’s owner 。
拖拽方式一:
拖拽方式二:
3. xib绘制单元格
- 自定义单元格指的是UITableView 的自定义cell。
- 通过 xib 可以快速的绘制cell。
- 新建UITableViewController 子类, 设置为根视图控制器。
- 新建一个UITableViewCell 子类,勾选Also create XIB file。
- 使用 xib 绘制自定义 cell 样式。
- 设置 cell 的重用标识(zhì)符。
- 声明和定义重用标识符
#import "RootTableViewController.h"
#import "RootCell.h" @interface RootTableViewController () @end @implementation RootTableViewController // 定义重用标识符(标准版)
static NSString * const identifier_cell = @"cell";
- 注册Cell
- (void)viewDidLoad {
[super viewDidLoad];
// 以前普通方式
// [self.tableView registerClass:[RootCell class] forCellReuseIdentifier:@"cell"];
// xib 注册cell
[self.tableView registerNib:[UINib nibWithNibName:@"RootCell" bundle:nil] forCellReuseIdentifier:identifier_cell];
}
// 返回Cell
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier_cell forIndexPath:indexPath];
return cell;
}
记得设置自定义cell的高度
// 设置每一行的高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return ;
}
4. 自动布局
1> 概述
- 自动布局:autoLayout , 不给View 固定的位置, 通过某些规则让View 自己适应自己的位置。
- iOS6.0之后推出, 在 iOS8.0 自动布局被大幅度优化, iOS9 中新增了许多功能。
2> 自动布局中常用的四个选项
3> Stack
- UIStackView, 可以管理多个视图。一次性为多个视图进行约束设置。
- Axis : 子视图排布方向。
- Alignment :子视图对齐方式。
- Distribution : 分布方式。(调整 StackView 的大小 , 切换选项观察)
- Space : 子视图的最小间距。
- 备注 : 选中多个排列的视图 , 勾选 Stack 即可进行编辑 StackView 选项卡。
4> Align(设置视图的对齐方式)
- Leading Edges :左对齐。
- Trailing Edges :右对齐。
- Top Edges :上对齐。
- Bottom Edges :下对齐。
- Horizontal Centers :纵向中心对齐
- Vertical Centers :横向中心对齐。
- BaseLine :基线对齐。
- Horizontal in Container :以屏幕的纵向中心线对齐。
- Vertical Container :以屏幕的横向中心对齐。
- 两者结合使用可以让View 的中心点和屏幕的中心点对齐。
5> Pin (设置视图的尺寸相关属性)
- 上面的四个方向的设置尺寸代表距离四个方向的最近的视图的距离
- 如果对应方向没有视图 , 则视为对应的屏幕方向的距离。Constrain to margins 选项表示是否留下20个点的位置。
- Width:视图的宽度
- Height:视图的高度
- Equal Width: 两个视图等宽。
- Equal Height :两个视图等高。
- Aspect Ratio: 设置宽高比
6> Resolve Auto Layout Issues
- Resolve Auto Layout Issues : 解决自动布局的问题。
- Selected Views: 选中的View , 不包含子视图。
- All Views in View:选中的View , 包含子视图。
- Update Frame :更新位置信息。
- Update Constraints :更新约束信息。
- Add Missing Constraints :忽略约束不足的错误。
- Reset to Suggested Constraints :重置被建议的约束。
- Clear Constraints :删掉所有的约束。
iOS学习32之UIKit框架-可视化编程-XIB的更多相关文章
- iOS开发UIKit框架-可视化编程-XIB
1. Interface Builder 可视化编程 1> 概述 GUI : 图形用户界面(Graphical User Interface, 简称GUI, 又称图形化界面) 是指采用图形方式显 ...
- iOS学习之UI可视化编程-XIB
一.Interface Builder可视化编程 1.Interface Builder简介: GUI:图形用户界面(Graphical User Interface,简称GUI,又称图形用户接口)是 ...
- iOS学习——布局利器Masonry框架源码深度剖析
iOS开发过程中很大一部分内容就是界面布局和跳转,iOS的布局方式也经历了 显式坐标定位方式 --> autoresizingMask --> iOS 6.0推出的自动布局(Auto La ...
- UI学习笔记---第十三天可视化设计 XIB, StoryBoard
一.XIB Xib是一种苹果提供的快速构建界面的编程方式,主要是为了简化MVC中的V的构建 Xib提供可视化的编辑界面,能大大提升页面布局效率 Xib常用操作 为控件关联事件 为空间指定delegat ...
- iOS学习33之可视化编程-StoryBoard
1. storyBoard与xib 1> 概述 iOS下可视化编程分为两种方式: xib 和 storyboard 在使用 xib 和 storyboard 创建 GUI 过程中,以 XML 文 ...
- iOS学习之UI可视化编程-StoryBoard
一.StoryBoard与xib 对比: 相同点:都属于IB编程的方式,可以快速构建GUI. 不同点:xib侧重于单文件(单独的控制器或者视图)编辑,storyboard侧重于多页面关联.storyb ...
- iOS开发概述UIkit动力学,讲述UIKit的Dynamic特性,UIkit动力学是UIkit框架中模拟真实世界的一些特性。
转发:http://my.oschina.net/u/1378445/blog/335014 iOS UIKit动力学 Dynamics UIAttachmentBehavior 实现iMessage ...
- iOS学习——iOS 整体框架及类继承框架图
整理自:IOS 整体框架类图值得收藏 一 整体框架 在iOS开发过程中,对iOS的整理框架的了解和学习是必不可少的一个环节,今天我们就好好来了解一下iOS的整体框架.首先贴一个关于iOS的框架介绍:i ...
- iOS学习笔记20-地图(二)MapKit框架
一.地图开发介绍 从iOS6.0开始地图数据不再由谷歌驱动,而是改用自家地图,当然在国内它的数据是由高德地图提供的. 在iOS中进行地图开发主要有三种方式: 利用MapKit框架进行地图开发,利用这种 ...
随机推荐
- Mysql之多源复制
在复制时,可以有多个Master.这些Master不进行冲突检查拓扑到Slave.在使用多源复制时对Slave的表存储格式是有要求的,必须要基于table存储而非文件存储[require table ...
- Web 项目下载图片简单处理方式
1.如果图片头信息有 "Content-Disposition", "attachment; filename="fileName" 那么直接使用 i ...
- Android 天气曲线
参考:http://blog.csdn.net/qy274770068/article/details/51560148
- 常用iOS的第三方框架
图像:1.图片浏览控件MWPhotoBrowser 实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等 ...
- Struts2之OGNL
一.OGNL是什么? OGNL(Object-Graph Navigation Language)对象图导航语言,是一种表达式语言,它可以 1.遍历对象的结构图 2.存取对象的属性(实例属性和静态属性 ...
- centos 安装 py pyhs2
1. yum install gcc-c++ cyrus-sasl-develpip2.7 install pyhs2 --->好像不行,在试试 用于 hive thrift 访问 2. os. ...
- 二、JavaScript语言--事件处理--DOM事件探秘
第一章 事件流 事件:是文档或浏览器窗口中发生的.特定的交互瞬间.JavaScript和HTML之间的交互都是通过事件来实现的. 事件流:描述的是从页面中接受事件的顺序 IE:事件冒泡流 Netsca ...
- centos vsftp 服务器配置
安装服务端: # yum install -y vsftpd 安装客服端: # yum install ftp -y http://os.51cto.com/art/201408/448630.htm
- .net学习之Session、Cookie、手写Ajax代码以及请求流程
1.IIS 7 以上版本集成了两种模式,一种是经典模式,一种是集成模式(直接将asp.net框架集成到IIS中) 2.浏览器和服务器端通过什么技术来实现的?Socket(套接字),通信的语法是HTTP ...
- Delphi中exit、break、continue等跳出操作的区别
Delphi中表示跳出的有break,continue,abort,exit,halt,runerror等 1.break 强制退出最近的一层循环(注意:只能放在循环里:而且是只能跳出最近的一层循环) ...