iOS实现小型计算器

 更新时间:2022年01月27日 12:52:48   作者:JackLee18  
这篇文章主要为大家详细介绍了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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • iOS微信第三方登录实现

    iOS微信第三方登录实现

    这篇文章主要介绍了iOS微信第三方登录实现的全过程,一步一步告诉大家iOS微信实现第三方登录的方法,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • iOS开发笔记--详解UILabel的相关属性设置

    iOS开发笔记--详解UILabel的相关属性设置

    这篇文章主要介绍了iOS开发笔记--详解UILabel的相关属性设置,对初学者具有一定的参考价值,有需要的可以了解一下。
    2016-11-11
  • iOS 11 AppIcon不显示问题小结

    iOS 11 AppIcon不显示问题小结

    小编在更新xcode9后,在运行老项目时遇到iOS 11 AppIcon不显示问题,下面小编大家分享一下我的思路,需要的朋友参考下吧
    2017-10-10
  • 微信JSSDK多图片上传并且解决IOS系统上传一直加载的问题

    微信JSSDK多图片上传并且解决IOS系统上传一直加载的问题

    这篇文章主要介绍了微信JSSDK多图片上传并且解决IOS系统上传一直加载的问题的相关资料,需要的朋友可以参考下
    2016-03-03
  • 30分钟快速带你理解iOS中的谓词NSPredicate

    30分钟快速带你理解iOS中的谓词NSPredicate

    NSPredicate类是用来定义逻辑条件约束的获取或内存中的过滤搜索。下面这篇文章将通过30分钟快速带大家理解iOS中的谓词NSPredicate类,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2018-03-03
  • iOS中获取系统相册中的图片实例

    iOS中获取系统相册中的图片实例

    这篇文章主要介绍了iOS中获取系统相册中的图片实例,具有一定的参考价值没有需要的朋友可以了解一下。
    2016-11-11
  • iOS当多个网络请求完成后执行下一步的方法详解

    iOS当多个网络请求完成后执行下一步的方法详解

    在多线程中,有时候我们会遇到一个界面同时有多个网络请求(比如a,b,c,d四个网络请求),在这四个个请求结束后,在请求到数据去做其他操作(UI更新等),下面这篇文章主要给大家介绍了关于iOS当多个网络请求完成后执行下一步的相关资料,需要的朋友可以参考下。
    2017-12-12
  • IOS中使用UIWebView 加载网页、文件、 html的方法

    IOS中使用UIWebView 加载网页、文件、 html的方法

    UIWebView 是用来加载加载网页数据的一个框,接下来通过本文给大家介绍IOS中使用UIWebView 加载网页、文件、 html的方法,对本文详情感兴趣的朋友一起学习吧
    2016-02-02
  • iOS UIImageView图片自动拉伸功能

    iOS UIImageView图片自动拉伸功能

    这篇文章主要介绍了iOS UIImageView图片自动拉伸功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • iOS利用手机摄像头测心率

    iOS利用手机摄像头测心率

    这篇文章主要为大家详细介绍了iOS利用手机摄像头测心率的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09

最新评论