一,本文讲解建立一个空项目,怎么一步一步的创建程序,总体的感觉一下程序流程  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)--项目建立与实现的更多相关文章

  1. 步步入佳境---UI入门(2)

    一,刚开始练习UI的时候,一般是在- (void)viewDidLoad方法中写代码测试,例如:- (void)viewDidLoad{    CGRect rect=CGRectMake(0, 0, ...

  2. 步步入佳境---UI入门(4) --简单练习

    一,创建SingleViewApplication 1,UILabel的简单使用 UILabel *label=[[UILabel alloc]initWithFrame:CGRectMake(0, ...

  3. 步步入佳境---UI入门(3) --单视图控制器

    视图控制器特点//1,抽象  视觉上没有效果//2,负责控制视图的显示方式//3,负责通知视图的显示内容//4,ios平台赋予的,收到内存警告和检测设备旋转@interface CHViewContr ...

  4. 一步一步使用ABP框架搭建正式项目系列教程之本地化详解

    返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 本篇目录 扯扯本地化 ABP中的本地化 小结 扯扯本地化 本节来说说本地化,也有叫国际化.全球化的,不管怎么个叫法,反正道理都是一 ...

  5. OSG入门即osgEarth建立一个地球的详细步骤

    OSG入门即osgEarth建立一个地球的详细步骤 转:http://blog.csdn.net/xiaol_deng/article/details/9246291 最近在学习有关osg的知识,刚开 ...

  6. jQuery UI 入门之实用实例分享

    jQuery UI 入门 jQuery UI 简介 jQuery UI 是一个建立在 jQuery JavaScript 库上的小部件和交互库,您可以使用它创建高度交互的 Web 应用程序.无论您是创 ...

  7. jQuery UI 入门之实用实例

    jQuery UI 入门 jQuery UI 简介 jQuery UI 是一个建立在 jQuery JavaScript 库上的小部件和交互库,您可以使用它创建高度交互的 Web 应用程序.无论您是创 ...

  8. 一步一步使用ABP框架搭建正式项目系列教程

    研究ABP框架好多天了,第一次看到这个框架的名称到现在已经很久了,但由于当时内功有限,看不太懂,所以就只是大概记住了ABP这个名字.最近几天,看到了园友@阳光铭睿的系列ABP教程,又点燃了我内心要研究 ...

  9. 【SSRS】入门篇(二) -- 建立数据源

    原文:[SSRS]入门篇(二) -- 建立数据源 通过 [SSRS]入门篇(一) -- 创建SSRS项目 这篇,我们建立了一个SSRS项目: 接下来,我们以 AdventureWorks2012 示例 ...

随机推荐

  1. WPF基础学习笔记整理 (八) 命令

    基础知识: 命令是应用程序的任务,并跟踪任务是否能够被执行. 命令不包含执行应用程序任务的代码. 命令是比事件更高级的元素.默认的命令目标是当前获得焦点的元素. 良好的Win应用程序,应用程序逻辑不应 ...

  2. Jmeter 中Cookie管理器的使用

    Jmeter中有好几个地方可以管理Cookie,比如 Http Cookie Manager HTTP Header Manager jmeter.property文件中: #CookieManage ...

  3. Jenkins + Ant + Jmeter 对项目的接口进行CI持续集成的配置 外加发送邮件 sendEmail

    Step1:安装Jenkins,从指定git上拉代码[安装步骤忽略] Step2:在项目安装的linux server上安装Ant 和Jmeter,我都安装在了自己的目录上,如下图 Step3:编写b ...

  4. svg操纵方案 基于 D3 还是 angular?

    之前还是想简单了, 现在重新写这篇.把逻辑拆分粒度的辨析,放到外面去. 问题提出:svg控制方案 基于 D3 还是 angular 根据这个,html 4种展现样式:普通的html,svg,2D ca ...

  5. Angular2,Springboot,Zuul,Shiro跨域CORS请求踩坑实录

    前言:前后端分离,业务分离,网关路由等已经成为当下web application开发的流行趋势.前端以单页面路由为核心的框架为主体,可以单独部署在nodejs或nginx上.后端以springboot ...

  6. 使用排序数组/链表/preorder构建二叉搜索树

    2018-08-13 11:29:05 一.Convert Sorted Array to Binary Search Tree 问题描述: 问题求解: public TreeNode sortedA ...

  7. rsync+inotify文件同步

    rsync+inotify文件同步 在服务器中,通常结合计划任务.shell脚本来执行本地备份.为了进一步提高备份的可靠性,使用异地备份也是非常重要的,利用rsync工具,可以实现快速.高效的异地备份 ...

  8. 雷林鹏分享:C# 多态性

    C# 多态性 多态性意味着有多重形式.在面向对象编程范式中,多态性往往表现为"一个接口,多个功能". 多态性可以是静态的或动态的.在静态多态性中,函数的响应是在编译时发生的.在动态 ...

  9. 如何给wpf的按钮添加背景图片

    1:简单实用 <Button Height="143" HorizontalAlignment="Left" Margin="30,34,0,0 ...

  10. Prime Gift CodeForces - 912E (中途相遇)

    链接 大意:求素因子只含给定素数的第k大数 先二分答案转为判定x是第几大, 然后分两块合并即可, 按奇偶分块可以优化一下常数 #include <iostream> #include &l ...