objective c 计算

先看一下最后结果:

一个简单的计算器

1.为计算器添加一个背景图像

向工程里面添加一幅图片,最好是480*320的png格式图片

a.从library库里面选择image view ,将其拖到view中,调整至全屏。在检查器属性-》Image中选择该图片

b.向View中添加一个Text Field控件,并设置相应的字体大小,取消user interation enable (这里只是输出)

一个简单的计算器


 

c. 想View中添加button控件,并调整相应位置和title

一个简单的计算器

d.选中=号按钮,改变他的type属性为custom,image属性中选择准备好的图片

一个简单的计算器

改变“清除”,“+/-”,“/”,“*”,“-”,“+”,“=”的tag值,

分别为101,102,103,104,105,106,107


好了基本的视图工作我们已经做好了,接下来就要敲代码了哦。

 

 

//.h

 

#import <UIKit/UIKit.h>

#define CLEAR_BUTTON 200

#define SIGNED_BUTTON 201

#define DIV_BUTTON 202

#define MUL_BUTTON 203

#define SUB_BUTTON 204

#define ADD_BUTTON 205

#define EQUAL_BUTTON 206

#define ADD_OPERAND ADD_BUTTON

#define SUB_OPERAND SUB_BUTTON

#define MUL_OPERAND MUL_BUTTON

#define DIV_OPERAND DIV_BUTTON

@interface CalDemoViewController : UIViewController {

          UITextField* resultEdit;

          //resultEdit用来指向我们的计算器显示窗口

          double leftOperandNum;

          //保存左操作数

          double rightOperandNum;

          //保存右操作数

          BOOL isRightOperandNum;

          //当前输入的数是否为右操作数

          int operand;

          //保存运输操作

}

@property (nonatomic, retain) IBOutlet UITextField* resultEdit;

-(IBAction)numButtonPressed:(id)sender;

//这个函数是用来响应当用户点击数据类型按钮的动作

-(IBAction)funButtonPressed:(id)sender;

//这个函数是用来响应当用户点击功能类型按钮的动作

-(double)calRelust:(int)operator;

@end

 

 

//.m

#import "CalDemoViewController.h"

@implementation CalDemoViewController

@synthesize resultEdit;

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.

- (void)viewDidLoad {

    [super viewDidLoad];

          self.resultEdit.text=@"0";

          leftOperandNum=0;

          rightOperandNum=0;

          isRightOperandNum=NO;

}

- (void)didReceiveMemoryWarning {

          // Releases the view if it doesn't have a superview.

    [super didReceiveMemoryWarning];

         

          // Release any cached data, images, etc that aren't in use.

}

- (void)viewDidUnload {

          // Release any retained subviews of the main view.

          // e.g. self.myOutlet = nil;

          self.resultEdit=nil;

}

- (void)dealloc {

    [super dealloc];

          [resultEdit release];

}

-(IBAction)numButtonPressed:(id)sender

{

          if ([self.resultEdit.text isEqualToString:@"0"]) {

              self.resultEdit.text=@"";

          }

          UIButton* button=(UIButton*)sender;

          self.resultEdit.text=[self.resultEdit.text stringByAppendingString:button.titleLabel.text];

         

          if (isRightOperandNum) {

              rightOperandNum=[self.resultEdit.text doubleValue];

          }

          else {

              leftOperandNum=[self.resultEdit.text doubleValue];

          }

}

-(IBAction)funButtonPressed:(id)sender

{

          UIButton* button=(UIButton*)sender;

          int tag=button.tag;

          double res;

          switch (tag) {

              case CLEAR_BUTTON:

                   self.resultEdit.text=@"0";

                   leftOperandNum=0;

                   rightOperandNum=0;

                   isRightOperandNum=NO;

                   break;

              case EQUAL_BUTTON:

                   res=[self calRelust:operand];

                   self.resultEdit.text=[NSString stringWithFormat:@"%lf", res];

                   isRightOperandNum=NO;

                   break;

              case ADD_BUTTON:

                   operand=ADD_OPERAND;

                   isRightOperandNum=YES;

                   self.resultEdit.text=@"";

                   break;

              case SUB_BUTTON:

                   operand=SUB_OPERAND;

                   isRightOperandNum=YES;

                   self.resultEdit.text=@"";

                   break;            

              default:

                   break;

          }

}

-(double)calRelust:(int)operator

{

          switch (operator) {

              case ADD_OPERAND:

                   return leftOperandNum+rightOperandNum;

              case SUB_OPERAND:

                   return leftOperandNum-rightOperandNum;

              case MUL_OPERAND:

                   return leftOperandNum*rightOperandNum;

              case DIV_OPERAND:

                   return leftOperandNum/rightOperandNum;

              default:

                   return 0;

          }

}

@end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值