zoukankan      html  css  js  c++  java
  • 第一个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(90, 40, 200, 50)];
        [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:@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9", nil];
        int n=0;
        for (int i=0; i<3; i++)
        {
            for (int j=0; j<3; j++)
            {
                self.button=[UIButton buttonWithType:UIButtonTypeRoundedRect];
                self.button.frame=CGRectMake(30+65*j, 150+65*i, 60, 60);
                [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(30, 345, 60, 60)];                       //设置button在view上的位置
        //也可以这样用:button0.frame:CGRectMake(30, 345, 60, 60);
        [button0 setTitle:@"0" 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=0; i<4; i++)
        {
            UIButton *button1=[UIButton buttonWithType:UIButtonTypeRoundedRect];
            [button1 setFrame:CGRectMake(225, 150+65*i, 60, 60)];
            [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(160, 410, 125, 35)];
        [button2 setTitle:@"=" forState:UIControlStateNormal];
        [button2 addTarget:self action:@selector(go:) forControlEvents:UIControlEventTouchUpInside];
        [self.view addSubview:button2];
        
        
        //添加清除键
        UIButton *button3=[UIButton buttonWithType:UIButtonTypeRoundedRect];
        [button3 setFrame:CGRectMake(30, 410, 125, 35)];
        [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(95, 345, 60, 60)];
        [button4 setTitle:@"." forState:UIControlStateNormal];
        [button4 addTarget:self action:@selector(shuzi:) forControlEvents:UIControlEventTouchUpInside];
        [self.view addSubview:button4];
        
        
        //后退
        UIButton *button5=[UIButton buttonWithType:UIButtonTypeRoundedRect];
        [button5 setFrame:CGRectMake(160, 345, 60, 60)];
        [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=0;
        self.num2=0;
        self.label.text=@"0";//保证下次输入时清零
        
    }
    
    //返回键
    -(void)back:(id)sender
    {
        if (![self.label.text isEqualToString:@""])//判断不是空
        {
            [self.string deleteCharactersInRange:NSMakeRange
             ([self.string length]-1,1)];//删除最后一个字符
            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
  • 相关阅读:
    SOFA 源码分析 — 自动故障剔除
    Pod——状态和生命周期管理及探针和资源限制
    pause的作用
    k8s-部署策略
    linux-删除一个目录下的所有文件,但保留某个或者多个指定文件
    k8s-gitlab搭建
    git中报unable to auto-detect email address 错误的解决拌办法
    k8s-secret用法
    k8s-traefik默认80端口
    nginx和apache区别
  • 原文地址:https://www.cnblogs.com/heyonggang/p/3452817.html
Copyright © 2011-2022 走看看