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购物分类模块的实现方案,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • 详解iOS 关于字体根据不同屏幕尺寸等比适配的问题

    详解iOS 关于字体根据不同屏幕尺寸等比适配的问题

    这篇文章主要介绍了详解iOS 关于字体根据不同屏幕尺寸等比适配的问题,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • ios实现tableView顶部弹簧图片效果

    ios实现tableView顶部弹簧图片效果

    这篇文章主要为大家详细介绍了ios实现tableView顶部弹簧图片效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • XCODE Debug模式资料整理

    XCODE Debug模式资料整理

    这篇文章主要介绍了XCODE Debug模式资料整理的相关资料,开发APP应用肯定会用到Debug来调试程序,这里就细致的讲解下debug资料,需要的朋友可以参考下
    2016-11-11
  • iOS开发探索多线程GCD队列示例详解

    iOS开发探索多线程GCD队列示例详解

    这篇文章主要为大家介绍了iOS开发探索多线程GCD队列示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • IOS 使用Block二次封装AFNetworking 3.0详解

    IOS 使用Block二次封装AFNetworking 3.0详解

    这篇文章主要介绍了IOS 使用Block二次封装AFNetworking 3.0详解的相关资料,需要的朋友可以参考下
    2017-02-02
  • iOS如何获取屏幕宽高、设备型号、系统版本信息

    iOS如何获取屏幕宽高、设备型号、系统版本信息

    这篇文章主要介绍了iOS如何获取屏幕宽高、设备型号、系统版本信息的相关代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • iOS实现高效裁剪图片圆角算法教程

    iOS实现高效裁剪图片圆角算法教程

    经常看到各种高效裁剪圆角的文章,正好之前做过一点数字图像处理,所以写个裁剪圆角的算法,下面这篇文章主要给大家介绍了关于iOS实现高效裁剪图片圆角算法的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-06-06
  • iOS中使用RSA加密详解

    iOS中使用RSA加密详解

    本文主要介绍了iOS中使用RSA加密的方法,具有一定的参考价值,下面跟着小编一起来看下吧
    2016-12-12
  • 2016年iOS公开可利用漏洞总结

    2016年iOS公开可利用漏洞总结

    本文总结了2016年比较严重的iOS漏洞(可用于远程代码执行或越狱),希望能够对大家移动安全方面的工作和研究带来一些帮助。
    2016-12-12

最新评论