01-UIKit
目录:
一、视图和控制器
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的更多相关文章
- [UIKit学习]01.关于UIView,frame,bounds,center
UIView是Cocoa大多控件的父类,本身不带事件. UIView的常见用法 @property(nonatomic,readonly) UIView *superview; 获得自己的父控件对象 ...
- iOS系列 基础篇 01 构建HelloWorld,剖析并真机测试
iOS基础 01 构建HelloWorld,剖析并真机测试 前言: 从控制台输出HelloWorld是我们学习各种语言的第一步,也是我们人生中非常重要的一步. 多年之后,我希望我们仍能怀有学习上进的心 ...
- iOS - UIKit
1.UIKit 框架基本结构 1)控件 屏幕上的所有 UI 元素都叫做控件(也有叫做视图.组件),比如按钮(UIButton).文本(UILabel)都是控件. 为了便于开发者打造各式各样的优秀 Ap ...
- Swift中的UIKit重力学
前言: 重力学这个名词不论在哪个行业领域听起来似乎都非常高大上. 那么在Swift中的重力学是什么呢?那就是将我们移动端屏幕上毫无生命力的东西也置于万有引力中.使它们能够展现出好像真的因为引力而向下坠 ...
- 01.SQLServer性能优化之----强大的文件组----分盘存储
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 文章内容皆自己的理解,如有不足之处欢迎指正~谢谢 前天有学弟问逆天:“逆天,有没有一种方 ...
- 用Kotlin创建第一个Android项目(KAD 01)
原文标题:Create your first Android project using Kotlin (KAD 01) 作者:Antonio Leiva 时间:Nov 21, 2016 原文链接:h ...
- Java企业实训 - 01 - Java前奏
前言: 虽然个人专攻.NET方向,不过由于个人是干教育行业的,方方面面的东西,不能说都必须精通,但肯定多少都会涉及到. 一个菜鸟学员,从啥都不会,经过一步步学习,最后到企业上手掌管一个模块甚至一个项目 ...
- Node.js 教程 01 - 简介、安装及配置
系列目录: Node.js 教程 01 - 简介.安装及配置 Node.js 教程 02 - 经典的Hello World Node.js 教程 03 - 创建HTTP服务器 Node.js 教程 0 ...
- 0042 MySQL学习笔记-入门--01
基本概念: 数据库DB(database): 数据的仓库,数据的集合,是数据的一种结构化的存储 数据库管理系统DBMS(database management system): 管理数据库的一套软件 ...
- Android快乐贪吃蛇游戏实战项目开发教程-01项目概述与目录
一.项目简介 贪吃蛇是一个很经典的游戏,也很适合用来学习.本教程将和大家一起做一个Android版的贪吃蛇游戏. 我已经将做好的案例上传到了应用宝,无病毒.无广告,大家可以放心下载下来把玩一下.应用宝 ...
随机推荐
- HTTP学习笔记--HTTP报文
报文流 HTTP报文在客户端.服务器和代理之间流动.“流入”.“流出”.“上游”.“下游”这些术语用来描述报文方向. 报文流入源端服务器 流入:流向服务器 流出:流向用户Age ...
- 远程登录 Windows server 2008 黑屏
scenerio: 远程登录 Windows server 2008 黑屏,别人那里一切正常. Solution:在黑屏界面,点击桌面,按住Ctrl+Alt+End键 -> Log Off. ...
- [译]Stairway to Integration Services Level 14 - 项目转换(SSIS 2008 ~ SSIS 2012)
介绍 本文中我们会用SSDT把第一个SSIS项目转换为 SSIS 2012, 为什么要升级到2012? 你可能想使用SSIS 2012新的特性. 又或者想使用 SSIS 2012 Catalog. 想 ...
- MBProgressHUD简单使用
使用HUD最多的情形用于请求等待提示 例如做登录的时候在确认登陆的时候可以用HUD提示正在登陆. 最基本的使用 初始化 //self.view代表在哪个view中显示hud MBProgressHUD ...
- 「OC」@property @synthesize和id
一.@property @synthesize关键字 这两个关键字是编译器特性,让Xcode可以自动生成getter和setter. (一)@property 关键字 @property 关键字可以自 ...
- 在Outlook中设置QQ邮箱
原本以为在Outlook中设置QQ邮箱没多大难度,但我错了,估计错了腾讯的麻烦程度,故记录下来. ----- 打开Outlook 2013(Outlook 2010也差不多),若是第一次打开会提示你设 ...
- day1作业脚本
1.编写登录接口: - 输入用户名和密码 - 认证成功后显示欢迎信息 - 输错三次后锁定 2.编写多级菜单 - 三级菜单 - 可依次进入子菜单 第一次写python脚本,因为没有学到函数,所以写的有点 ...
- 使用 Async 和 Await 的异步编程 #Reprinted#
异步方法容易编写 string urlContents = await client.GetStringAsync(); 以下特征总结了使上面一个异步方法. 方法签名包含一个 Async 或async ...
- TortoiseGit 自动登录
在环境变量里添加Home=%USERPROFILE% 在运行中打开%Home% 在打开目录中新建文件_netrc,并保存以下内容 machine git.oschina.net login usern ...
- 转:requirejs:让人迷惑的路径解析(~~不错)
接触过requirejs的童鞋可能都知道,无论是通过define来定义模块,还是通过require来加载模块,模块依赖声明都是很重要的一步.而其中涉及到的模块路径解析,对于新手来说,有的时候会让人觉得 ...