37.拖放控件Interface Builder

什么是Interface Builder

简称IB,是Mac OS X和iOS平台下⽤于设计和测试⽤户界⾯的应⽤程序。

提供了拖放⾯板,可以将控件拖放到屏幕上。这里写图片描述

xib 和 .nib

IB创建.xib⽂件,包括视图布局,以XML格式存储。

程序运⾏后,.xib⽂件中的内容编译为.nib⽂件(⼆进制⽂件),存储在⼯程包中。

使⽤IB初始化视图控制器这里写图片描述

创建视图控制器

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:

(NSBundle *)nibBundleOrNil

nibNameOrNil是.xib⽂件的名字。注:nibNameOrNil如果填

nil,默认找与类同名的.xib⽂件(LoginViewController.xibLoginView.xib)。

可以直接使⽤init⽅法,默认找相关的.xib⽂件。

// 利用XIB文件加载视图控制器 并作为Window的根视图控制器
// [NSBundle mainBundle]在主目录中加载 如果填nil 默认从主目录中找
RootViewController *rootVC = [[RootViewController alloc] initWithNibName:@”RootViewController” bundle:[NSBundle mainBundle]];
// 设置根视图控制器
self.window.rootViewController = rootVC;
[rootVC release];

拖放控件这里写图片描述

插座变量

插座变量。⽤于控制IB中的UI控件。

IBOutlet,外联指针。连接插座变量和IB中的UI控件

设置:选中控件,按住command,向类中拖放,设置变量名。

这里写图片描述

把空间设置成属性

这里写图片描述

动作。⽤于响应UI控件的触发事件。

IBAction。连接⽅法和IB中的UI控件

设置:选中控件,按住command,向类中拖放,设置⽅法名。

这里写图片描述
这里写图片描述

设置代理这里写图片描述

⼆、StoryBoard的使⽤

什么是StoryBoard

在AppDelegate的-application:

didFinishLaunchingWithOptions:⽅法中不要再⽤代码初始化

⼀个window

将创建好的Storyboard在应⽤程序配置General中设置为

Main Interface

视图添加与控制和IB开发⼀样。

这里写图片描述

StoryBoard创建视图控制器

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

UIStoryboard,storyboard对象。视图控制器有属性

storyboard。也可以通过⽂件名创建对应的storyboard⽂件对象。

[self.storyboard instantiateViewControllerWithIdentifier:**]

============================

Segue关联按钮

利⽤segue去push视图控制器。

选中按钮,按住command,从按钮向下⼀级⻚⾯连线。按钮不需要添加响应⽅法。

注:适⽤于不存在传值的⻚⾯切换。

这里写图片描述

Segue关联两个⻚⾯

要给segue设置唯⼀的标识符

利⽤segue去push视图控制器的时候,使⽤视图控制器的实例⽅法:

- ( void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender;

这里写图片描述

==================================================

Segue实现传值

- (void)prepareForSegue:(UIStoryboardSegue *)segue

sender:(id)sender segue触发之后,下⼀个⻚⾯显⽰之前执⾏。

segue包含3个重要的属性:identifier、sourceViewController、destinationViewController。

通过destinationViewController获取下⼀个⻚⾯对象。实现传值。

拉线跳转 会触发这个方法(一般传值使用)

但是一个界面可以 去往很多界面 并且可以通过拉线完成 这时候 就需要判断一个要操作的是哪一根连线

需要用segue的identifier属性去判断

属性传值步骤

1.给segue(跳转的线)加一个 identifier(标识)

2.通过标识 判断出 你要操作的线

3.取出目的地控制器

4.利用目的地控制器传值

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

if ([segue.identifier isEqualToString:@”PushToSecondVC”]) {

SecondViewController *secondVC = segue.destinationViewController;

secondVC.userName = self.userNameTF.text;

secondVC.passWord = self.paddWordTF.text;

// 防止循环引用

__block RootViewController *mySelf = self;

// block传值

secondVC.block = ^void(NSString *userName,NSString *passWord){

mySelf.userNameTF.text = userName;

mySelf.paddWordTF.text = passWord;

};

}

}

=========================================

⾃定义单元格

单元格指的是UITableView的cell

在Storyboard中,可以直接在

TableView上添加Prototype Cells

可以在Prototype Cells中的单元格中

添加⾃定义⼦视图

⾃定义单元格的注意事项

选中Prototype Cells中的单元格后在Xcode⼯具的右边的检查器⼯具中修改单元格的标⽰符,注意标⽰符要与该表格视图的其他单元格区分

如果有⾃定义单元格类的话,并且在⾃定义单元格类中添加了IB修饰符修饰的属性和⽅法,需要在Storyboard的单元格检查器中的Custom Class修改为⾃定义的类

这里写图片描述

===============================================

配置⾃动布局的⽅式

在Storyboard中进⾏配置,添加约束

约束:视图布局的规则。

利⽤约束可以指⽰:视图在同⼀⽔平⾏上对⻬、调整视图⼤⼩匹配其他视图等等

约束配置

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

SizeClass

九宫格 控制苹果产品的屏幕(适配)

4个格子 BaseVie 状态下 是一个基础状态 这是你无论添加的是控件 还是给控件添加约束条件 都可以被其他状态所继承下来的

横2个格子 是所有iPhone横屏状态下 你多增加的控件和约束条件 是不被其他状态所继承 只有横屏才会显示

竖3个格子 是所有iPhone竖屏下 你多增加的控件和约束条件 是不被其他状态所继承 只有竖屏才会显示

这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值