目录:

一、视图和控制器

二、interface Builder

回到顶部

一、视图和控制器

1 视图(view)ios程序运行期间用户所能看见的东西都可以认为是视图,比如UIwindow就是一个视图类。

* 所有视图类都直接间接的继承UIView

* 控件是可以和用户交互的视图对象,一般会继承自UIConller类,UIButton、UILable

2 控制器(contoller)控制视图显示的对象叫控制器,通常叫视图控制器。

* 所有的视图控制器都是直接或间接继承自UIViewController类

* 创建自己的控制器,定义一个类,继承自UIViewController

步骤:

*1 创建一个控制器MXViewController在MXViewController.m文件中重写viewDidLoad

- (void)viewDidLoad

{

//创建控件

UILabel* label = [[UILabel alloc] initWithFrame:CGRectMake(20, 20, 100, 40)];

//设置属性

label.text = @"hello word!!!";

//加入父视图中

[self.view addSubview:label];

}

*2 在MXAppDelegate.m文件中写application:函数具体如下:

#import "MXViewController.h"

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

// Override point for customization after application launch.

self.window.backgroundColor = [UIColor whiteColor];

//创建类控件

MXViewController* myController = [[MXViewController alloc] init];

//修改window中rootViewController属性

self.window.rootViewController = myController;

[self.window makeKeyAndVisible];

return YES;

}

*3 button

- (void)viewDidLoad

{

//一定要调用父类的viewDidLoad

[super viewDidLoad];

//创建控件

UILabel* label = [[UILabel alloc] initWithFrame:CGRectMake(20, 20, 100, 40)];

UIButton* button = [UIButton buttonWithType:UIButtonTypeSystem];

//设置属性

label.text = @"hello world!!!";

[button setTitle:@"hello" forState:UIControlStateNormal];

button.frame = CGRectMake(160, 20, 80, 30);//frame设置坐标和宽高

//button.backgroundColor = [UIColor grayColor];

//给button添加事件处理 self对象 tap是self对象方法 for...点击各种情况

[button addTarget:self action:@selector(tap) forControlEvents:UIControlEventTouchUpInside];

//加入父视图中

[self.view addSubview:label];

[self.view addSubview:button];

// Do any additional setup after loading the view.

}

-(void)tap{

NSLog(@"调用了tap方法");

}

回到顶部

二、interface Builder

1 简称IB,专门用于让开发者构造界面的,是一个可视化的所见即所得的界面设计工具,从xcode4就集成到了xcode中

2 其本质是一个文本编辑器,设计结果是一个文本文件,以前此文件的扩展名是.nib,所以也叫nib文件,现在这个文本文件扩展名是.xib,

nib文件:button={"0k",{12,12}};

xib是xml文件

nib文件的内容,界面上所有的对象及属性,还要对象与对象之间的关系。

3 如何使用,程序运行时,如果你的控制器,创建时加载了此nib文件,那么文件中描述的所有对象会被创建,所有属性会被赋值,对象之间的关系会自动维护

4 如何加载,所有的控制器都会有一个方法:initWithNibName:"nib文件的文件名"

5 给xib文件中button控件绑定一个方法,选择button控件,按住Ctrl拖拽至方法处,该方法的返回值必须是IBAction(本质void),只是一个连接的一个标记

6 IBAction

* .m文件中定义一个私有方法,将来做事情的响应。

* 从xib文件中连接按钮到方法上(用Ctrl键拖拽连接)

* 取消连接,从xib文件中找到按钮,第6个检查器中找到连接,将其删除

7 IBOutlet

* 在.m文件的扩展中定义属性,属性一定有IBOutlet标记

* 从xib文件中连接属性(连线)

* 如果属性是retain(strong)并使用了MRC,需要在dealloc方法中release此属性

8 IBOutlet 和 IBAction

IBOutlet连接的是属性,如果需要在程序代码中(controller中),访问这个xib文件中定义的对象时(如lable)就需要连接一个属性到xib

IBAction连接的是方法,如果需要用户操作了xib文件中定义的控件(如按钮),需要调用方法,那么方法就需要用IBAction连线

IBAction方法一般是由用户触发的

练习:界面上有一个按钮,当用户touch了此按钮时,界面上就出现了一个lable,

作业:

0. 复习课堂代码

1. 尝试使用Button的各种事件

2. 尝试使用UILabel和UIButton的其他属性

如:font  (字体)

textColor

backgroundColor

tintColor

3. 写一个模仿聊天的界面

界面上有一个按钮,按下此按钮后,界面会出现一个Label

要求:

1)每个Label之间上下间隔10个点,并且和屏幕左右保持10个点的距离

2) label高20个点

3) 每个label的文字会叠加

4) 每个label的背景色是灰色的

5) 尝试改变字体(UIFont)

屏幕宽度是320个点

01-UIKit的更多相关文章

  1. [UIKit学习]01.关于UIView,frame,bounds,center

    UIView是Cocoa大多控件的父类,本身不带事件. UIView的常见用法 @property(nonatomic,readonly) UIView *superview; 获得自己的父控件对象 ...

  2. iOS系列 基础篇 01 构建HelloWorld,剖析并真机测试

    iOS基础 01 构建HelloWorld,剖析并真机测试 前言: 从控制台输出HelloWorld是我们学习各种语言的第一步,也是我们人生中非常重要的一步. 多年之后,我希望我们仍能怀有学习上进的心 ...

  3. iOS - UIKit

    1.UIKit 框架基本结构 1)控件 屏幕上的所有 UI 元素都叫做控件(也有叫做视图.组件),比如按钮(UIButton).文本(UILabel)都是控件. 为了便于开发者打造各式各样的优秀 Ap ...

  4. Swift中的UIKit重力学

    前言: 重力学这个名词不论在哪个行业领域听起来似乎都非常高大上. 那么在Swift中的重力学是什么呢?那就是将我们移动端屏幕上毫无生命力的东西也置于万有引力中.使它们能够展现出好像真的因为引力而向下坠 ...

  5. 01.SQLServer性能优化之----强大的文件组----分盘存储

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 文章内容皆自己的理解,如有不足之处欢迎指正~谢谢 前天有学弟问逆天:“逆天,有没有一种方 ...

  6. 用Kotlin创建第一个Android项目(KAD 01)

    原文标题:Create your first Android project using Kotlin (KAD 01) 作者:Antonio Leiva 时间:Nov 21, 2016 原文链接:h ...

  7. Java企业实训 - 01 - Java前奏

    前言: 虽然个人专攻.NET方向,不过由于个人是干教育行业的,方方面面的东西,不能说都必须精通,但肯定多少都会涉及到. 一个菜鸟学员,从啥都不会,经过一步步学习,最后到企业上手掌管一个模块甚至一个项目 ...

  8. Node.js 教程 01 - 简介、安装及配置

    系列目录: Node.js 教程 01 - 简介.安装及配置 Node.js 教程 02 - 经典的Hello World Node.js 教程 03 - 创建HTTP服务器 Node.js 教程 0 ...

  9. 0042 MySQL学习笔记-入门--01

    基本概念: 数据库DB(database): 数据的仓库,数据的集合,是数据的一种结构化的存储 数据库管理系统DBMS(database management system): 管理数据库的一套软件 ...

  10. Android快乐贪吃蛇游戏实战项目开发教程-01项目概述与目录

    一.项目简介 贪吃蛇是一个很经典的游戏,也很适合用来学习.本教程将和大家一起做一个Android版的贪吃蛇游戏. 我已经将做好的案例上传到了应用宝,无病毒.无广告,大家可以放心下载下来把玩一下.应用宝 ...

随机推荐

  1. js设置奇偶行数样式

    $(document).ready(function () { odd = { "background": "none" }; //奇数样式 even = { ...

  2. Sass入门——基本特性-基础

    本文来自慕课网大漠 声明变量 三个部分:1.声明变量的符号"$"2.变量名称3.赋予变量的值 $brand-primary : darken(#428bca, 6.5%) !def ...

  3. use MSBuild cmd to build and deploy the database project.

    You can use the below command to implement it. SET TargetDBName="Database name" SET DataBa ...

  4. ThinkPHP第七天(F函数使用,项目分组配置,项目分组模板文件放置规则配置)

    1.F(文件名称,写入数据,写入地址),用于将数据写入至磁盘文件中,如F('Data',$arr,'./Data/'),作用是将$arr写入至网站根目录的Data文件夹中的Data.php中. 2.读 ...

  5. Web Api Route 注册要放在 Mvc Route 注册前

    今天想研究一下Web Api,写了一个测试Api,打开网站后浏览一下,可是却提示找不到方法,刚开始以为哪里配置错了,可找了半天也没见. 因为我是在一个现有Mvc站点做的Demo,所以打算新建一个Mvc ...

  6. JRebel 6 破解版及使用方法

    最近更新到jrebel6.2.1了,我自己做了个技术分享的微信公众号(茶爸爸),有心的朋友可以来这里一起学习 云盘下载链接: http://pan.baidu.com/s/1bnGzMUF 配置: - ...

  7. 链接分析算法之:HITS算法

    链接分析算法之:HITS算法     HITS(HITS(Hyperlink - Induced Topic Search) ) 算法是由康奈尔大学( Cornell University ) 的Jo ...

  8. python异常处理URLError,HTTPError,Wrapping,

    们在使用爬虫来抓取网页内容的时候,HTTP异常是必须要注意的一项,所以本文,我们来详细探寻一下HTTP异常处理的相关内容,通过一些具体的实例来分析一下,非常的简单,但是却很实用.   先来说一说HTT ...

  9. JavaEE Tutorials (7) - 在会话bean中使用异步方法调用

    7.1异步方法调用88 7.1.1创建异步业务方法88 7.1.2从企业bean客户端调用异步方法897.2async示例应用90 7.2.1async—war模块的架构91 7.2.2运行async ...

  10. Hdu 5050 Divided Land

    题目要求就是做求两个二进制数的gcd,如果是用java的话,这题很简单.但也可以用C++做,只能先给自己留下这个坑了,还在研究c++的做法. import java.math.BigInteger; ...