zoukankan      html  css  js  c++  java
  • IOS实现小型计算器


              作为一名初学者,编辑一款能够在IOS操作系统上运行的计算器是一件很值得自豪的事情,网络上虽然后很多相关的文章和代码,功能也很强大但是我感觉相关的计算器比加复杂,晦涩难懂,所以我想通过这个小小的计算器,能够帮到大家,如果有不完美的地方,还请大家多多批评指教。

    首先呢,编辑这个计算器用到了两种控件,Label和Button控件,Label控件用于显示结果,而Button则是相应的键。我把计算器的键分为三种numButton,caculatorButton和clearButton。numButton主要有数字0到9还有小数点,caculatorButton有加号,减号,乘号,除号,等号。clearButton有清除键。所以总共有三种方法。首先先对控件进行连接,Label进行属性连接,Button进行方法连接。

    计算器的图形如下:


    具体的代码如下;

    HHLDelegate.h

    #import <UIKit/UIKit.h>
    
    @class HHLViewController;
    
    @interface HHLAppDelegate : UIResponder <UIApplicationDelegate>
    
    @property (strong, nonatomic) UIWindow *window;
    
    @property (strong, nonatomic) HHLViewController *viewController;
    
    @end
    
       


    HHLDelegate.m

    #import "HHLAppDelegate.h"
    
    #import "HHLViewController.h"
    
    @implementation HHLAppDelegate
    
    - (void)dealloc
    {
        [_window release];
        [_viewController release];
        [super dealloc];
    }
    
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
        // Override point for customization after application launch.
        self.viewController = [[[HHLViewController alloc] initWithNibName:@"HHLViewController" bundle:nil] autorelease];
        self.window.rootViewController = self.viewController;
       self.viewController.view.backgroundColor=[[UIColor alloc]initWithRed:0.76 green:0.82 blue:0.94 alpha:0.8];
        [self.window makeKeyAndVisible];
        return YES;
    }
    
    - (void)applicationWillResignActive:(UIApplication *)application
    {
        // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
        // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
    }
    
    - (void)applicationDidEnterBackground:(UIApplication *)application
    {
        // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 
        // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
    }
    
    - (void)applicationWillEnterForeground:(UIApplication *)application
    {
        // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
    }
    
    - (void)applicationDidBecomeActive:(UIApplication *)application
    {
        // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
    }
    
    - (void)applicationWillTerminate:(UIApplication *)application
    {
        // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
    }
    
    @end
    


    HHLViewController.h

    #import <UIKit/UIKit.h>
    
    @interface HHLViewController : UIViewController
    
    @property(retain,nonatomic)IBOutlet UILabel *label;
    @property(copy,nonatomic)NSString *title;
    @property(retain,nonatomic)NSMutableString *num1,*num2,*num3;
    
    
    
    - (IBAction)calculatorButton:(id)sender;
    - (IBAction)numButton:(id)sender;
    - (IBAction)clearButton:(id)sender;
    @end
    


    HHLViewController.m

    #import "HHLViewController.h"
    
    
    @interface HHLViewController ()
    
    @end
    
    @implementation HHLViewController
    @synthesize label;
    @synthesize title;
    @synthesize num1,num2,num3;
    
    int m=0;
    int n=0;
    
    float y=0;
    float count=0;
    NSString *collect=@"";
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
    	
    }
    
    - (void)didReceiveMemoryWarning
    {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    - (IBAction)calculatorButton:(id)sender
    {
       
        n=0;
        m++;
        num3=num2;
    
        title=[sender titleForState:UIControlStateNormal];
            
            if (m==1) {
    
                count=[num3 floatValue];
    
                 collect=title;
            }
            else{
                
                if ([collect isEqualToString:@"+"]==1) {
                    y=[num3 floatValue];
                    count=count+y;
                }
                
                if ([collect isEqualToString:@"-"]==1) {
                    y=[num3 floatValue];
                    count=count-y;
                }
                
                if ([collect isEqualToString:@"*"]==1) {
                    y=[num3 floatValue];
                    count=count*y;
                }
                
                if ([collect isEqualToString:@"/"]==1) {
                    y=[num3 floatValue];
                    count=count/y;
                }
                label.text=[NSString stringWithFormat:@"%f",count];
                collect=title;
                
            
            }
            
        }
        
    
    
    - (IBAction)numButton:(id)sender{
        n++;
        title=[sender titleForState:UIControlStateNormal];
        num1=[[NSMutableString alloc]initWithString:title];
        if(n==1)
        {
            num2=num1;
        }
        else{
           num2=[[NSMutableString alloc]initWithString:[num2 stringByAppendingString:num1]];
        }
        label.text=num2;
        
    }
    - (IBAction)clearButton:(id)sender{
    label.text=@"";
    num1=num3=num2=[[NSMutableString alloc]initWithString:@""];
    collect=@"";
    count=0;
    m=0;
    n=0;
      
    }
    - (void)dealloc
    {
        [num1 release];
        [num2 release];
        [num3 release];
        [title release];
        [label release];
        [super dealloc];
    }
    
    
    @end


  • 相关阅读:
    C#中关于@的用法
    c++ 中__declspec 的用法
    #pragma详细解释(一)
    memmove 和 memcpy的区别
    【niubi-job——一个分布式的任务调度框架】----安装教程
    [异能程序员]第一章 酒后事发(第一更)
    博客园的最后一篇博文,还是要离开了(附带个人博客源码分享)
    五一假期——技术之路上的坎儿
    deerlet-redis-client添加集群支持,邀请各路大神和菜鸟加入。
    从日常开发说起,浅谈HTTP协议是做什么的。
  • 原文地址:https://www.cnblogs.com/fuhaots2009/p/3469146.html
Copyright © 2011-2022 走看看