步步入佳境---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 示例 ...
随机推荐
- Redis 5种数据结构及其使用场景举例--STRING
String 数据结构是简单的 key-value 类型,value 不仅可以是 String,也可以是数字(当数字类型用 Long 可以表示的时候encoding 就是整型,其他都存储在 sdshd ...
- python 时间元组转可视化时间(自定义)
>>> time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) '2019-01-04 11:20:25'
- windows与kali双系统安装基本教程
以前写过一篇在虚拟机中安装kali的基本教程的文章,那时候的kali还是1.0时代,现如今已经kali2.0了,在虚拟机中运行kali还是会受到性能的影响,所以还是装到自己电脑上跑起来最爽.当然如果你 ...
- 文件路径、File协议、FTP协议、Http协议之间简单的区别
File协议主要用于访问本地计算机中的文件,就如同在Windows资源管理器中打开文件一样,基本的格式如下:file:///文件路径. FTP是文件传输协议,可以用于互联网上.例如,你有一个网站,放在 ...
- [.NET开发] C# BigInteger 处理超大整型数字
今天遇到一个要处理XSD中Integer的数值区间的计算的问题,Integer这个类型的值区间理论上是可没有边界的,假设目前的值是1.5E+10000, 这个数字已经达到double和Int64都无法 ...
- 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 ...
- 玲珑杯 ACM热身赛 #2.5 A 记忆化搜索+瞎搞
#include <cstdio> #include <vector> #include <iostream> #include <algorithm> ...
- Android之RecyclerView实现时光轴
做项目的过程中有个需求需要时光轴,于是网上找了部分资料 ,写了个案例,现在分享给大家. 如图: activity_main.xml <?xml version="1.0" e ...
- C# 导出HTML为Excel
最近在项目中需要Excel导出,有多个Sheet页,每个Sheet页的内容比较多,且不是规整的表格,绑定值是个比较麻烦的事,便考虑直接将HTML转换为Excel文件进行导出. 一.使用JS方法将HTM ...
- UVA-12569 Planning mobile robot on Tree (EASY Version) (BFS+状态压缩)
题目大意:一张无向连通图,有一个机器人,若干个石头,每次移动只能移向相连的节点,并且一个节点上只能有一样且一个东西(机器人或石头),找出一种使机器人从指定位置到另一个指定位置的最小步数方案,输出移动步 ...