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语言中如何调用DLL
    fortran出现stack overflow的原因及解决办法
    iOS: ARC和非ARC下使用Block属性的问题
    Objective-C Autorelease Pool 的实现原理
    class-dump 复制到/usr/bin目录不可写,Operation not permitted 解决办法
    Auto Layout 使用心得
    iOS-关于微信支付
    IOS应用安全(五):高级Runtime分析和操作
    Objective-C Runtime 运行时之六:拾遗
    Objective-C Runtime 运行时之五:协议与分类
  • 原文地址:https://www.cnblogs.com/fuhaots2009/p/3469146.html
Copyright © 2011-2022 走看看