一,本文讲解建立一个空项目,怎么一步一步的创建程序,总体的感觉一下程序流程  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. Redis 5种数据结构及其使用场景举例--STRING

    String 数据结构是简单的 key-value 类型,value 不仅可以是 String,也可以是数字(当数字类型用 Long 可以表示的时候encoding 就是整型,其他都存储在 sdshd ...

  2. python 时间元组转可视化时间(自定义)

    >>> time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) '2019-01-04 11:20:25'

  3. windows与kali双系统安装基本教程

    以前写过一篇在虚拟机中安装kali的基本教程的文章,那时候的kali还是1.0时代,现如今已经kali2.0了,在虚拟机中运行kali还是会受到性能的影响,所以还是装到自己电脑上跑起来最爽.当然如果你 ...

  4. 文件路径、File协议、FTP协议、Http协议之间简单的区别

    File协议主要用于访问本地计算机中的文件,就如同在Windows资源管理器中打开文件一样,基本的格式如下:file:///文件路径. FTP是文件传输协议,可以用于互联网上.例如,你有一个网站,放在 ...

  5. [.NET开发] C# BigInteger 处理超大整型数字

    今天遇到一个要处理XSD中Integer的数值区间的计算的问题,Integer这个类型的值区间理论上是可没有边界的,假设目前的值是1.5E+10000, 这个数字已经达到double和Int64都无法 ...

  6. English trip -- 国际音标表

    26个字母音标表 A a [ei] B b [bi:] C c [si:] D d [di:] E e [i:] F f [ef] G g [dʒi:] H h [eit∫] I i [ai] J j ...

  7. 玲珑杯 ACM热身赛 #2.5 A 记忆化搜索+瞎搞

    #include <cstdio> #include <vector> #include <iostream> #include <algorithm> ...

  8. Android之RecyclerView实现时光轴

    做项目的过程中有个需求需要时光轴,于是网上找了部分资料 ,写了个案例,现在分享给大家. 如图: activity_main.xml <?xml version="1.0" e ...

  9. C# 导出HTML为Excel

    最近在项目中需要Excel导出,有多个Sheet页,每个Sheet页的内容比较多,且不是规整的表格,绑定值是个比较麻烦的事,便考虑直接将HTML转换为Excel文件进行导出. 一.使用JS方法将HTM ...

  10. UVA-12569 Planning mobile robot on Tree (EASY Version) (BFS+状态压缩)

    题目大意:一张无向连通图,有一个机器人,若干个石头,每次移动只能移向相连的节点,并且一个节点上只能有一样且一个东西(机器人或石头),找出一种使机器人从指定位置到另一个指定位置的最小步数方案,输出移动步 ...