步步入佳境---UI入门(1)--项目建立与实现
一,本文讲解建立一个空项目,怎么一步一步的创建程序,总体的感觉一下程序流程 1,首先建立一个项目,如下:single view project,我们首先删除CHAppDelegate文件和Main.storyboard和CHViewController
要点:
//启动,创建,实例--应用程序对象,并且指定应用程序的代理对象
//程序启动到关闭称为应用程序的生命周期
//实例对象从分配内存到释放内存,称为实例对象的生命周期
//程序启动后,在程序内任何时间,任何文件内获得的实例对象都是同一个实例对象,这个实例对象叫做单例
//应用程序代理对象,处理应用程序对象的状态
进入main.m文件,删除不必要的头文件,UIApplicationMain修改如下:
return UIApplicationMain(argc, argv, nil,nil);运行程序发下crash掉了,呵呵
我们首先看看UIApplicationMain在API文档中的介绍:
This function is called in the main entry point to create the application object and the application delegate and set up the event cycle.
int UIApplicationMain (//这个函数在main方法中调用来创建应用程序对象和程序代理并且建立消息循环
int argc,
char *argv[],//前两个参数是Main函数里面的两个参数,传进来
NSString *principalClassName,//UIApplication类或子类的名字,如果设置为nil,会默认成UIApplication,一般不做设置. UIApplication is assumed.
NSString *delegateClassName//程序执行就会进入这个委托中执行消息循环
);
二.创建一个类FirstApplicationDelegate来作为主程序的代理类
我们准备将FirstApplicationDelegate作为应用程序对象的代理对象,所以它就应该接受应用程序对象的代理,实现UIApplicationDelegate协议 如下:
@interface FirstApplicationDelegate : UIResponder<UIApplicationDelegate>//在类的后面加上<UIApplicationDelegate>就是类必须实现这个协议
@property (nonatomic,retain) UIWindow *window;//创建窗口属性
@end
然后在主函数中修改为return UIApplicationMain(argc, argv, nil,NSStringFromClass([FirstApplicationDelegate class]));并添加头文件#import "FirstApplicationDelegate.h".
NSStringFromClass([FirstApplicationDelegate class])的操作作用:NSStringFromClass是把类名转化为字符串形式,[FirstApplicationDelegate class]是把这个类的类名返回.
三.创建ViewController类,继承于UIViewController作为应用程序的根视图
// 视图控制器的根(视图)加载完成后...
// 根视图与窗口的根(视图控制器)不是同一个对象...
我建立如下@interface CHViewController : UIViewController
在.m中实现代码如下:主要利用建立随机换色程序来介绍
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
// 声明按钮的实例对象// 实例化按钮的实例对象
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
// 设置按钮实例对象的大小和位置...
button.frame = CGRectMake(100, 100, 120.f, 120.f);
// 设置按钮实例对象的颜色...
button.backgroundColor = [UIColor orangeColor];
// 设置按钮实例对象的标题...
[button setTitle:@"点我啊" forState:UIControlStateNormal];
// 设置按钮实例对象在接受用户点击时,处理的方法...
// 这个方法,发送给谁呢?
[button addTarget:self action:@selector(didClickButton:) forControlEvents:UIControlEventTouchUpInside];//按钮事件处理函数
// 将按钮显示出来...
[self.view addSubview:button];//把按钮添加到根视图,根视图就是程序运行时你看到的第一个界面(暂时这么理解)
}
// 按钮触发的方法
- (void)didClickButton:(UIButton *)button
{
// // 创建随机颜色
// CGFloat r = arc4random()%1000/1000.0f;
// CGFloat g = arc4random()%1000/1000.0f;
// CGFloat b = arc4random()%1000/1000.0f;
// UIColor *randomColor = [UIColor colorWithRed:r green:g blue:b alpha:1.0f];
// 将随机颜色赋值给按钮的背景颜色
button.backgroundColor = [UIColor randomColor];
NSLog(@"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
}
// UIApplicationDelegate是个协议,定义了一堆监测程序执行方法,这些方法都有自己的触发事件
// 处理程序加载完成
// 程序启动,活跃/非活跃状态,前/后台切换,推送通知,内存警告等
为FirstApplicationDelegate添加内容如下:
@implementation FirstApplicationDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions NS_AVAILABLE_IOS(3_0)
{
//实例化应用程序窗口
//每个应用程序有且只有一个关键窗口
UIWindow *window=[[UIWindow alloc]initWithFrame:CGRectMake(0, 0, 320, 480)];
self.window=window;//将局部变量赋值给应用程序代理对象的属性
//设置背景色
window.backgroundColor=[UIColor whiteColor];
//设置窗口大小
//window.frame=CGRectMake(0, 0, 320, 480);
RootViewController * rootVC=[[RootViewController alloc]init];//实例化窗口内容
window.rootViewController=rootVC;
//将window对象设置成为应用程序对象的关键窗口
[window makeKeyAndVisible];
[window release];
return YES;
}
@end
步步入佳境---UI入门(1)--项目建立与实现的更多相关文章
- 步步入佳境---UI入门(2)
一,刚开始练习UI的时候,一般是在- (void)viewDidLoad方法中写代码测试,例如:- (void)viewDidLoad{ CGRect rect=CGRectMake(0, 0, ...
- 步步入佳境---UI入门(4) --简单练习
一,创建SingleViewApplication 1,UILabel的简单使用 UILabel *label=[[UILabel alloc]initWithFrame:CGRectMake(0, ...
- 步步入佳境---UI入门(3) --单视图控制器
视图控制器特点//1,抽象 视觉上没有效果//2,负责控制视图的显示方式//3,负责通知视图的显示内容//4,ios平台赋予的,收到内存警告和检测设备旋转@interface CHViewContr ...
- 一步一步使用ABP框架搭建正式项目系列教程之本地化详解
返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 本篇目录 扯扯本地化 ABP中的本地化 小结 扯扯本地化 本节来说说本地化,也有叫国际化.全球化的,不管怎么个叫法,反正道理都是一 ...
- OSG入门即osgEarth建立一个地球的详细步骤
OSG入门即osgEarth建立一个地球的详细步骤 转:http://blog.csdn.net/xiaol_deng/article/details/9246291 最近在学习有关osg的知识,刚开 ...
- jQuery UI 入门之实用实例分享
jQuery UI 入门 jQuery UI 简介 jQuery UI 是一个建立在 jQuery JavaScript 库上的小部件和交互库,您可以使用它创建高度交互的 Web 应用程序.无论您是创 ...
- jQuery UI 入门之实用实例
jQuery UI 入门 jQuery UI 简介 jQuery UI 是一个建立在 jQuery JavaScript 库上的小部件和交互库,您可以使用它创建高度交互的 Web 应用程序.无论您是创 ...
- 一步一步使用ABP框架搭建正式项目系列教程
研究ABP框架好多天了,第一次看到这个框架的名称到现在已经很久了,但由于当时内功有限,看不太懂,所以就只是大概记住了ABP这个名字.最近几天,看到了园友@阳光铭睿的系列ABP教程,又点燃了我内心要研究 ...
- 【SSRS】入门篇(二) -- 建立数据源
原文:[SSRS]入门篇(二) -- 建立数据源 通过 [SSRS]入门篇(一) -- 创建SSRS项目 这篇,我们建立了一个SSRS项目: 接下来,我们以 AdventureWorks2012 示例 ...
随机推荐
- chrome的url列表里面也找不到chrome://plugins的原因
plugins 页面被移除后,可以访问: chrome://settings/content 调整 Flash.PDF 的设置. 原本 plugins 页面就基本只剩下这两货了,移除掉确实没啥影响. ...
- Centos修改系统语言
使用man page帮助时,发现居然是中文的,不过想想即便英语再水,也要逼着自己去适应.于是百度找了一下修改系统语言的方法. 首先使用 locale 命令查看当前的系统语言 然后修改时一般有两种方法, ...
- YOLO V2论文理解
概述 YOLO(You Only Look Once: Unified, Real-Time Object Detection)从v1版本进化到了v2版本,作者在darknet主页先行一步放出源代码, ...
- 【Golang 接口自动化05】使用yml管理自动化用例
我们在前面几篇文章中学习怎么发送数据请求,怎么处理解析接口返回的结果,接下来我们一起来学习怎么进行测试用例管理,今天我们介绍的是使用yml文件进行用例管理,所以首先我们一起来了解一下YAML和它的简单 ...
- Codeforces 916C - Jamie and Interesting Graph
916C - Jamie and Interesting Graph 思路:构造. 对于1到n最短路且素数,那么1到n之间连2 对于最小生成树,找一个稍微大点的素数(比1e5大)构造一个和为这个素数的 ...
- Codeforces 888E - Maximum Subsequence(折半枚举(meet-in-the-middle))
888E - Maximum Subsequence 思路:折半枚举. 代码: #include<bits/stdc++.h> using namespace std; #define l ...
- Codeforces 832C - Strange Radiation
832C - Strange Radiation 思路:二分最短时间. 代码: #include<bits/stdc++.h> using namespace std; #define l ...
- Codeforces 834D - The Bakery(dp+线段树)
834D - The Bakery 思路:dp[i][j]表示到第j个数为止分成i段的最大总和值. dp[i][j]=max{dp[i-1][x]+c(x+1,j)(i-1≤x≤j-1)},c(x+1 ...
- StartCoroutine 和 StopCoroutine
我的Unity版本是2017.2.0p4(64-bit) StartCoroutine的两个版本: StartCoroutine(string methodName) StartCoroutine(I ...
- 关于网站的SYN_RECV(SYN_RECEIVED)***的防范措施
关于网站的SYN_RECV(SYN_RECEIVED)***的防范措施 一.总结 一句话总结:SYN ***是最常见又最容易被利用的一种***手法.相信很多人还记得2000年YAHOO网站遭受的*** ...