步步入佳境---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 示例 ...
随机推荐
- 【BZOJ】4012: [HNOI2015]开店
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4012 给出一个$n$个点的树,树上每一个点都有一个值$age$,每条边都有边权,每次查询一 ...
- go 通道
1. package main import "fmt" func sum(s []int, c chan int) { sum := for _, v := range s { ...
- MVC 枚举绑定 DropDownList
/// <summary> /// 枚举转化下拉列表数据集 /// </summary> /// <param name="type">类型&l ...
- 【转】DrawDibDraw
http://blog.csdn.net/normallife/article/details/53177315 BMP位图文件结构及平滑缩放 用普通方法显示BMP位图,占内存大,速度慢,在图形缩小时 ...
- js 中面向对象的多态
什么是多态: 实际上是不同对象作用与同一操作产生不同的效果.多态的思想实际上是把“想做什么”和“谁去做“分开,多态的好处是什么呢?为什么要多态?我们来看看 Martin Fowler 在<重构: ...
- RabbitMQ入门_09_TTL
参考资料:https://www.rabbitmq.com/ttl.html A. 为队列设置消息TTL TTL 是 Time-To-Live 的缩写,指的是存活时间.RabbitMQ 可以为每一个队 ...
- HDU 6015 Skip the Class
Skip the Class 代码: #include<bits/stdc++.h> using namespace std; #define ll long long #define l ...
- C# 通过Newtonsoft.Json.dll序列化日期的处理
Newtonsoft.Json.dll提供了非常好的Json序列化和反序列化方式,但是对日期的处理却让我纠结了很久.首先定义类如下: public class Student{ public int ...
- 数据库SQL优化(百万级数据库优化方案)
1. 对查询进行优化 要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2. where 子句 要尽量避免在 where 子句中对字段进行 null 值判断.( ...
- K8S镜像删除及环境清理
环境清理: #删除所有容器sudo docker rm -f $(sudo docker ps -qa) #删除/var/etcd目录sudo rm -rf /var/etcd #删除/var/lib ...