这两天都没有写博客,虽然也有两样小东西出来 但是,,说实话我没掌握很好 代码好相似 记不住

这两天,前天我做了一个小计算器,今天算是复习了一下,在view上放置静态图和动态图

我感觉有时候做东西的时候很盲目,所以就试着想了想步骤:

我觉得,第一步:  根据你想要达到的功能,想好你需要的控件

                第二步: 根据你的控件,拉出控件的连接点。分两类:一类是按键,一类是文本 。 然后考虑到按键一般都会有相应的响应,接下来的主要动作都是围绕按键来的。

                第三步: 在接口文件中声明变量了,现在用的多的是   @VIewControl.h  和一个你创建的文件,这个计算器中 calcutor 里声明较多,@VIewControl.h 中只有一个类变量

                第四步: 然后再跟据你想要达到的功能,第一步开始,一步一步去写代码。主要是根据按键功能来写,比我之前还是有些许进步的!

就以下篇代码为例:

我之前用  if  语句做的,代码很长,重复率很高。后来只好重来,用 Switch 语句来写。

这种方法 将 0--9 的数字统一,设置一个 didclick 函数里,分别用  tag 0--9  到时候只需要判断就好了。

  #import "ViewController.h"

#import "calcutor.h"

@interface ViewController ()

@property (weak, nonatomic)IBOutlet UILabel *resultLabel;

@end

-------------------------------------------------------------------下面的代码是今天复习的图片编辑的结果,我将两张比较单调的图片上传到 工程里面  然后再  将其中一幅图片作为背景。

int i=10;                                                            // 

@implementation ViewController

- (void)viewDidLoad {

    [superviewDidLoad];

    calc=[[calcutoralloc]init];

    

    UIImage *image = [ [  UIImage alloc  ]   initWithFrame :  CGRectMake(0,0,320,590)  ]  ;   

定义一个Image 类型的变量 image  并且确定它的范围( 0 , 0 ,  320 , 590 )   initWithFrame   这个词是结合两句的关键,前句的 init  “和” “with”  后一句的  frame 


    imageView.image  = [ UIImage  imageNamed @"风景4.png"  ]  ;  

//本来是将 image 的图片赋给 imageView.image 的,这一句扩展了 直接将 名字是@“ 风景4.png ”的 图片赋给了  imageView.image  简化了一个步骤。


    [self.view  addSubview:imageView];           

//将对象  加入  界面  ,  self  的原因是 View 在该文件中声明。


    imageView2.alpha=0.3;    

// 调节图片透明度的代码 取值 0--1

}

------------------------------------------------

- (IBAction)UIButton:(UIButton *)sender

{

    float value=[sender.currentTitlefloatValue];

    if(calc.op=='+'||calc.op=='-'||calc.op=='x'||calc.op=='/')

    {

        if(calc.point=='.')

        {

            calc.opValue2=calc.opValue2+value/i;

            i=i*10;

        }

        else

        {

            calc.opValue2=calc.opValue2*10+value;

        }

        self.resultLabel.text=[NSStringstringWithFormat:@"%.2f",calc.opValue2];

    }

---------

上述部分判断,有了运算符号之后,对第二个操作数的有无小数点的相关赋值

--------

    else

    {

        if (calc.point=='.')

        {

            calc.opValue1=calc.opValue1+value/i;

            i=i*10;

        }

        else

        {

            calc.opValue1=calc.opValue1*10+value;

        }

        self.resultLabel.text=[NSStringstringWithFormat:@"%.2f",calc.opValue1];

    }

}

--------------------------------------------------------

上述部分是判断第一个操作符,以及它的有无小数点的赋值

------------------------------------------------------

- (IBAction)dot:(UIButton *)sender {

    calc.point='.';

}

- (IBAction)yunsuan:(UIButton *)sender

{

    calc.point='0';

    i=10;

    switch (sender.tag)     

 //这个  Switch  函数,用  sender  原因是  当前的按键内,用  sender 来做类型名  tag 值就是   + - x / =  的替代。

{

        case 1:

            [calc work];

// 从这里引用出它的 work 方法,进入到   calcutor.m  函数中去    进行  -(void)work  的运算。然后得到一个返回值。下面是相同的道理。

            calc.op='+';

            self.resultLabel.text=[NSStringstringWithFormat:@"%.2f",calc.opValue1];

///      这句话是将 操作符1 的值 赋值给   self.resultLabel.text  

            break;

// break 语句的意思是,跳出该循环

        case 2:

            [calc work];

            calc.op='-';

            self.resultLabel.text=[NSStringstringWithFormat:@"%.2f",calc.opValue1];

            break;

        case 3:

            [calc work];

            calc.op='x';

            self.resultLabel.text=[NSStringstringWithFormat:@"%.2f",calc.opValue1];

            break;

        case 4:

            [calc work];

            calc.op='/';

            self.resultLabel.text=[NSStringstringWithFormat:@"%.2f",calc.opValue1];

            break;

        case 5:

            [calc work];

            calc.op='=';

            self.resultLabel.text=[NSStringstringWithFormat:@"%.2f",calc.opValue1];

        default:

            break;

      }

}

--------------------------------------------------------


- (IBAction)equal:(UIButton *)sender {

    float result=[calcwork];

//  通过你按的等号 ,进入 -(void)work;中求得返回值,作为结果复制到   float 型的  result 局部变量中


    self.resultLabel.text=[NSStringstringWithFormat:@"%.2f",result];

// 作为结果肯定是要输出的 ,所以将这个值赋予   resultLabel 文本中去。


    i=10;

    calc.op='0';

    calc.point='0';

    float value=[sender.currentTitlefloatValue];

    if(calc.point!='.')

    {

        calc.opValue2=calc.opValue2*10+value;

    }

    else

    {

        calc.opValue2=calc.opValue2+value/i;

        i=i*10;

    }

}



- (IBAction)clear:(UIButton *)sender {

    i=10;

//  必须将  i  的值要重置到 10  因为下次运算的 i 值,经过上述的运算已经乘了好几个10了   


    calc.point='0';

    calc.op='0';

    calc.opValue1=0;

    calc.opValue2=0;

    self.resultLabel.text=[NSStringstringWithFormat:@"0"];

}


- (void)didReceiveMemoryWarning {

    [superdidReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}

@end



@implementation calcutor

-(float)work

{

    if ( self.op=='+')

    {

         self.opValue1 +=self.opValue2;

/// 这样做的理由是能够进行多次运算。

        self.opValue2=0;

//  在这里给操作符2赋一个0,接下来便可以连续运算,直接输入操作符2

        return self.opValue1;

//  返回操作符1即返回一个结果

    }

    else if( self.op=='-')

    {

        self.opValue1 -=self.opValue2;

        self.opValue2=0;

        return self.opValue1;

    }

   else if(self.op=='x')

    {

        self.opValue1 *=self.opValue2;

        self.opValue2=0;

        return self.opValue1;

    }

   else if(self.op=='/')

    {

        self.opValue1 /=self.opValue2;

        self.opValue2=0;

        return self.opValue1;

    }

    return  0;

}

@end


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值