第一个APP:IOS做简单运算的计算器
步骤:
1.打开Xcode,单机Creat a new Xcode project
2.左边选择ios下Application,右边选择single view Application
3.填写项目名称单机Next
4.ViewController.h中定义成员和方法
//
// ViewController.h
// TestCalculator4
//
// Created by heyonggang on 13-11-28.
// Copyright (c) 2013年 MiracleHe. All rights reserved.
// #import <UIKit/UIKit.h> @interface ViewController : UIViewController @property(retain,nonatomic) UIButton *button;
@property(retain,nonatomic) UILabel *label;
@property(retain,nonatomic) NSMutableString *string; //NSMutableString用来处理可变对象,如需要处理字符串并更改字符串中的字符
@property(assign,nonatomic) double num1,num2;
@property(assign,nonatomic) NSString *str; @end
5.ViewController.m
//
// ViewController.m
// TestCalculator4
//
// Created by heyonggang on 13-11-28.
// Copyright (c) 2013年 MiracleHe. All rights reserved.
// #import "ViewController.h"
#import <QuartzCore/QuartzCore.h> @interface ViewController () @end @implementation ViewController - (void)viewDidLoad
{
[super viewDidLoad]; //创建标签
self.label=[[UILabel alloc]initWithFrame:CGRectMake(, , , )];
[self.view addSubview:_label];
self.label.backgroundColor=[UIColor greenColor]; //设置背景颜色
self.label.textColor=[UIColor blackColor]; //字体颜色
//self.label.textAlignment = UITextAlignmentRight; //字体居右
self.label.textAlignment = NSTextAlignmentCenter;
self.label.font=[UIFont systemFontOfSize:32.4]; //设置字体 //添加1-9数字
NSArray *array=[NSArray arrayWithObjects:@"",@"",@"",@"",@"",@"",@"",@"",@"", nil];
int n=;
for (int i=; i<; i++)
{
for (int j=; j<; j++)
{
self.button=[UIButton buttonWithType:UIButtonTypeRoundedRect];
self.button.frame=CGRectMake(+*j, +*i, , );
[self.button setTitle:[array objectAtIndex:n++] forState:UIControlStateNormal]; //注意:[array objectAtIndex:n++]
[self.view addSubview:_button];
[self.button addTarget:self action:@selector(shuzi:) forControlEvents:UIControlEventTouchUpInside]; //addTarget:self 的意思是说,这个方法在本类中也可以传入其他类的指针
}
} //单独添加0
UIButton *button0=[UIButton buttonWithType:UIButtonTypeCustom]; //创建一个圆角矩形的按钮
/*
CALayer *layer = button0.layer;
[layer setMasksToBounds:YES];
[layer setCornerRadius:5.0];
button0.layer.borderColor = [UIColor lightGrayColor].CGColor;
button0.layer.borderWidth = 1.0f;
*/
[button0 setFrame:CGRectMake(, , , )]; //设置button在view上的位置
//也可以这样用:button0.frame:CGRectMake(30, 345, 60, 60);
[button0 setTitle:@"" forState:UIControlStateNormal]; //设置button主题
button0.titleLabel.textColor = [UIColor blackColor]; //设置0键的颜色
[button0 addTarget:self action:@selector(shuzi:) forControlEvents:UIControlEventTouchUpInside]; //按下按钮,并且当手指离开离开屏幕的时候触发这个事件
//触发了这个事件后,执行shuzi方法,action:@selector(shuzi:)
[self.view addSubview:button0]; //显示控件 //添加运算符
NSArray *array1=[NSArray arrayWithObjects:@"+",@"-",@"*",@"/",nil];
for (int i=; i<; i++)
{
UIButton *button1=[UIButton buttonWithType:UIButtonTypeRoundedRect];
[button1 setFrame:CGRectMake(, +*i, , )];
[button1 setTitle:[array1 objectAtIndex:i] forState:UIControlStateNormal];
//[array1 objectAtIndex:i]为获取按钮的属性值
[self.view addSubview:button1];
[button1 addTarget:self action:@selector(go:) forControlEvents:UIControlEventTouchUpInside];
} //添加=
UIButton *button2=[UIButton buttonWithType:UIButtonTypeRoundedRect];
[button2 setFrame:CGRectMake(, , , )];
[button2 setTitle:@"=" forState:UIControlStateNormal];
[button2 addTarget:self action:@selector(go:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button2]; //添加清除键
UIButton *button3=[UIButton buttonWithType:UIButtonTypeRoundedRect];
[button3 setFrame:CGRectMake(, , , )];
[button3 setTitle:@"AC" forState:UIControlStateNormal];
[button3 addTarget:self action:@selector(clean:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button3]; //添加.
UIButton *button4=[UIButton buttonWithType:UIButtonTypeRoundedRect];
[button4 setFrame:CGRectMake(, , , )];
[button4 setTitle:@"." forState:UIControlStateNormal];
[button4 addTarget:self action:@selector(shuzi:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button4]; //后退
UIButton *button5=[UIButton buttonWithType:UIButtonTypeRoundedRect];
[button5 setFrame:CGRectMake(, , , )];
[button5 setTitle:@"back" forState:UIControlStateNormal];
[button5 addTarget:self action:@selector(back:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button5]; self.string=[[NSMutableString alloc]init];//初始化可变字符串,分配内存
self.str = [[NSString alloc]init];
// Do any additional setup after loading the view, typically from a nib.
} //0-9方法
- (void)shuzi:(id)sender
{ [self.string appendString:[sender currentTitle]]; //数字连续输入
self.label.text=[NSString stringWithString:_string]; //显示数值
self.num1=[self.label.text doubleValue]; //保存输入的数值
NSLog(@"self.num1 is %f",self.num1); } //计算方法
-(void)go:(id)sender
{
if ([self.str isEqualToString:@""])//当str里为空
{
self.num2=self.num1;
NSLog(@"self.num2 is %f",self.num2);
self.label.text=[NSString stringWithString:_string]; //只要是符号就显示数值
[self.string setString:@""]; //字符串清零
self.str=[sender currentTitle]; //保存运算符为了作判断作何种运算
NSLog(@"%@",_str);
[self.string appendString:self.str];
self.label.text=[NSString stringWithString:_string]; //显示数值
[self.string setString:@""]; //字符串清零
}
else
{
//输出上次计算结果
if ([self.str isEqualToString:@"+"])//之前的符号是+
{
[self.string setString:@""];//字符串清零
self.num2+=self.num1;//num2是运算符号左边的数值,还是计算结果 //输出上次结果后判断这次输入的是何符号
if ([[sender currentTitle]isEqualToString:@"="])
{
NSLog(@"self.num2 is %f",self.num2);
self.label.text=[NSString stringWithFormat:@"%f",self.num2];
self.str=@"";
}
else if ([[sender currentTitle]isEqualToString:@"+"]||[[sender currentTitle]isEqualToString:@"-"]||[[sender currentTitle]isEqualToString:@"*"]||[[sender currentTitle]isEqualToString:@"/"])
{
NSLog(@"self.num2 is %f",self.num2);
self.label.text=[NSString stringWithFormat:@"%f",self.num2];
[self.string setString:@""]; //字符串清零
self.str=[sender currentTitle];//保存运算符为了作判断作何种运算
NSLog(@"%@",_str);
[self.string appendString:self.str];
[self.string setString:@""];//字符串清零
}
} else if ([self.str isEqualToString:@"-"])//之前的符号是-
{
[self.string setString:@""];//字符串清零
self.num2-=self.num1;
//输出上次结果后判断这次输入的是何符号
if ([[sender currentTitle]isEqualToString:@"="])
{
NSLog(@"self.num2 is %f",self.num2);
self.label.text=[NSString stringWithFormat:@"%f",self.num2];
self.str=@"";
}
else if ([[sender currentTitle]isEqualToString:@"+"]||[[sender currentTitle]isEqualToString:@"-"]||[[sender currentTitle]isEqualToString:@"*"]||[[sender currentTitle]isEqualToString:@"/"])
{
NSLog(@"self.num2 is %f",self.num2);
self.label.text=[NSString stringWithFormat:@"%f",self.num2];
[self.string setString:@""];//字符串清零
self.str=[sender currentTitle];//保存运算符为了作判断作何种运算
NSLog(@"%@",_str);
[self.string appendString:self.str];
[self.string setString:@""];//字符串清零
}
} else if([self.str hasPrefix:@"*"])//之前的符号是* hasPrefix:方法的功能是判断创建的字符串内容是否以某个字符开始
{
[self.string setString:@""];//字符串清零
self.num2*=self.num1;
//输出上次结果后判断这次输入的是何符号
if ([[sender currentTitle] isEqualToString:@"="])
{
NSLog(@"self.num2 is %f",self.num2);
self.label.text=[NSString stringWithFormat:@"%f",self.num2];
self.str=@"";
}
else if ([[sender currentTitle]isEqualToString:@"+"]||[[sender currentTitle]isEqualToString:@"-"]||[[sender currentTitle]isEqualToString:@"*"]||[[sender currentTitle]isEqualToString:@"/"])
{
NSLog(@"self.num2 is %f",self.num2);
self.label.text=[NSString stringWithFormat:@"%f",self.num2];
[self.string setString:@""]; //字符串清零
self.str=[sender currentTitle]; //保存运算符为了作判断作何种运算
NSLog(@"%@",_str);
[self.string appendString:self.str]; //在字符串后增加新的东西,[a appendString:]
[self.string setString:@""]; //字符串清零
}
} else if ([self.str isEqualToString:@"/"])//之前的符号是/
{
[self.string setString:@""];//字符串清零
self.num2/=self.num1;
//判断输出上次结果后判断这次输入的是何符号
if ([[sender currentTitle]isEqualToString:@"="])
{
NSLog(@"self.num2 is %f",self.num2);
self.label.text=[NSString stringWithFormat:@"%f",self.num2];
self.str=@"";
}
else if ([[sender currentTitle]isEqualToString:@"+"]||[[sender currentTitle]isEqualToString:@"-"]||[[sender currentTitle]isEqualToString:@"*"]||[[sender currentTitle]isEqualToString:@"/"])
{
NSLog(@"self.num2 is %f",self.num2);
self.label.text=[NSString stringWithFormat:@"%f",self.num2];
[self.string setString:@""];//字符串清零
self.str=[sender currentTitle];//保存运算符为了作判断作何种运算
NSLog(@"%@",_str);
[self.string appendString:self.str];
[self.string setString:@""];//字符串清零
} }
}
} //当按下清除建时,所有数据清零
-(void)clean:(id)sender
{
[self.string setString:@""];//清空字符
self.num1=;
self.num2=;
self.label.text=@"";//保证下次输入时清零 } //返回键
-(void)back:(id)sender
{
if (![self.label.text isEqualToString:@""])//判断不是空
{
[self.string deleteCharactersInRange:NSMakeRange
([self.string length]-,)];//删除最后一个字符
self.label.text=[NSString stringWithString:_string];//显示结果
}
} - (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
} - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
} - (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
} @end
第一个APP:IOS做简单运算的计算器的更多相关文章
- 3) 十分钟学会android--建立第一个APP,建立简单的用户界面
在本小节里,我们将学习如何用 XML 创建一个带有文本输入框和按钮的界面.下一节课将学会使 APP 对按钮做出响应——按钮被按下时,文本框里的内容被发送到另外一个 Activity. Android ...
- 使用pycharm开发web——django2.1.5(二)创建一个app并做一些配置
这里我学习的呢是刘江老师的站,主要原因在于他这个版本新,还比较细节 网址先留一手,约等于在引用http://www.liujiangblog.com/ 开始正题: 1.在pycharm界面终端命令行里 ...
- [ios][opengles]GLKit如何搭一个app的框架
一个外文对GLKit的讲解: Beginning OpenGL ES 2.0 with GLKit Part 1 英文原文链接:http://www.raywenderlich.com/5223 ...
- iOS App 唤醒另一个App
网上也有讲这块的,感觉讲得都不是很好.而且有一些细节根本没有讲清楚.这里重写整理一下相关知识点. 主要内容 URL Scheme 是什么? 项目中关键的配置 注意事项 URL Scheme 是什么? ...
- 【转】【iOS开发】打开另一个APP(URL Scheme与openURL)
目标 平常我们做iOS开发,会经常遇到打开其他的APP的功能.本篇文章讲的就是打开别人的APP的一些知识.我们的目标是: 打开别人的APP 让别人打开我们的APP iOS9的适配问题 使用URL Sc ...
- iOS APP 如何做才安全
本来 写了一篇<iOS 如何做才安全--逆向工程 - Reveal.IDA.Hopper.https抓包 等>,发现文章有点杂,并且“iOS 如何做才安全”这部分写的越来越多,觉得 分出来 ...
- 做一个 App 前需要考虑的几件事
做一个 App 前需要考虑的几件事 来源:limboy的博客 随着工具链的完善,语言的升级以及各种优质教程的涌现,做一个 App 的成本也越来越低了.尽管如此,有些事情最好前期就做起来,避免当 ...
- 做一个App前需要考虑的几件事
本文转载于文章原文链接,版本归原作者所有! 随着工具链的完善,语言的升级以及各种优质教程的涌现,做一个 App 的成本也越来越低了.尽管如此,有些事情最好前期就做起来,避免当 App 有了一定规模后, ...
- 学习方法和阶段介绍 、 iOS界面开发引入 、 构造第一个App 、 视图控制器和视图 、 控件与事件 、 InterfaceBuilder
1 创建并运行第一个App 1.1 问题 使用Xcode创建一个App项目,该应用实现功能在界面上显示Hello World标签,在模拟器中的运行结果如图-1所示: 图-1 1.2 方案 分析图-1, ...
随机推荐
- Don’t Assume – Per Session Buffers
MySQL has a number of global buffers, i.e. your SGA. There are also a number of per session/thread b ...
- 《Python自然语言处理》中文版-纠错【更新中。。。】
最近在看<Python自然语言处理>中文版这本书,可能由于是从py2.x到py3.x,加上nltk的更新的原因,或者作者的一些笔误,在书中很多代码都运行不能通过,下面我就整理一下一点有问题 ...
- ABBYY FineReader 12扫描界面介绍
ABBYY FineReader 12OCR图文识别软件自身拥有着自己的扫描界面,一般在默认情况下,ABBYY FineReader 使用其自身的扫描界面.本文就解析了ABBYY FineReader ...
- EntityFramework5.0CodeFirst全面学习
Code First 约定 借助 CodeFirst,可通过使用 C# 或Visual Basic .NET 类来描述模型.模型的基本形状可通过约定来检测.约定是规则集,用于在使用 Code Firs ...
- mac版photoshop滤镜库报错解法
http://bbs.pcbeta.com/viewthread-1556878-1-1.html
- linux下文件合并、分割、去重
1.文件合并 1.1文件上下合并 cat f1 f2> muti (将文件f1.f2合并成文件muti,f1在上,f2在下) 1.2左右合并 paste f1 f2 > muti (将 ...
- Nginx 499错误的原因及解决方法
今天进行系统维护,发现了大量的499错误, 499错误 ngx_string(ngx_http_error_495_page), /* 495, https certificate error */n ...
- BeanUtils.copyProperties() 用法--部分转
把一个类对象copy到另一个类对象(这两个可以不同). 1.org.apache.commons.beanutils.BeanUtils.copyProperties(dest, src) org.s ...
- (转帖)BootStrap入门教程 (三)
上讲回顾:Bootstrap的基础CSS(Base CSS)提供了优雅,一致的多种基础Html页面要素,包括排版,表格,表单,按钮等,能够满足前端工程师的基本要素需求. Bootstrap作为完整 ...
- OpenSSL 双向认证
在使用OpenSSL进行SSL双向认证时,需要在服务器和客户端配置如下接口函数: SSL_CTX_set_verify(SSL_CTX* ctx,int mode,int (*verify_callb ...