好久没写了,今天来一篇之前写的计算器的小Demo
当时还没有学UICollectionView,于是这个界面全部是有label和button写出来的
下面上代码
这是.h文件里面写的
#import <UIKit/UIKit.h> @interface ViewController : UIViewController{ UILabel *_label;//显示框 int a;//数字的tag int b;//运算符的tag float result;//结果 BOOL flag;//判断是非按等号 } @end
这是.m文件里面写的
1 #import "ViewController.h" 2 #define HEIGHT [[UIScreen mainScreen] bounds].size.height 3 #define WIDTH [[UIScreen mainScreen] bounds].size.width 4 @interface ViewController () 5 6 @end 7 8 @implementation ViewController 9 10 - (void)viewDidLoad { 11 [super viewDidLoad]; 12 [self creat]; 13 // Do any additional setup after loading the view, typically from a nib. 14 } 15 - (void)creat{ 16 UIImage *num001 = [UIImage imageNamed:@"001.png"]; 17 UIImage *num002 = [UIImage imageNamed:@"002.png"]; 18 UIImage *num101 = [UIImage imageNamed:@"101.png"]; 19 UIImage *num102 = [UIImage imageNamed:@"102.png"]; 20 UIImage *num201 = [UIImage imageNamed:@"201.png"]; 21 UIImage *num202 = [UIImage imageNamed:@"202.png"]; 22 UIImage *num301 = [UIImage imageNamed:@"301.png"]; 23 UIImage *num302 = [UIImage imageNamed:@"302.png"]; 24 UIImage *num401 = [UIImage imageNamed:@"401.png"]; 25 UIImage *num402 = [UIImage imageNamed:@"402.png"]; 26 UIImage *num501 = [UIImage imageNamed:@"501.png"]; 27 UIImage *num502 = [UIImage imageNamed:@"502.png"]; 28 UIImage *num601 = [UIImage imageNamed:@"601.png"]; 29 UIImage *num602 = [UIImage imageNamed:@"602.png"]; 30 UIImage *num701 = [UIImage imageNamed:@"701.png"]; 31 UIImage *num702 = [UIImage imageNamed:@"702.png"]; 32 UIImage *num801 = [UIImage imageNamed:@"801.png"]; 33 UIImage *num802 = [UIImage imageNamed:@"801.png"]; 34 UIImage *num901 = [UIImage imageNamed:@"901.png"]; 35 UIImage *num902 = [UIImage imageNamed:@"902.png"]; 36 37 38 UIImage *calj01 = [UIImage imageNamed:@"j01.png"]; 39 UIImage *calj02 = [UIImage imageNamed:@"j02.png"]; 40 UIImage *caljj01 = [UIImage imageNamed:@"jj01.png"]; 41 UIImage *caljj02 = [UIImage imageNamed:@"jj02.png"]; 42 UIImage *calc01 = [UIImage imageNamed:@"c01.png"]; 43 UIImage *calc02 = [UIImage imageNamed:@"c02.png"]; 44 UIImage *calcc01 = [UIImage imageNamed:@"cc01.png"]; 45 UIImage *calcc02 = [UIImage imageNamed:@"cc02.png"]; 46 UIImage *cald01 = [UIImage imageNamed:@"d01.png"]; 47 UIImage *cald02 = [UIImage imageNamed:@"d02.png"]; 48 UIImage *caldd = [UIImage imageNamed:@"dd01.png"]; 49 50 51 52 53 self.view.backgroundColor = [UIColor whiteColor]; 54 _label = [[UILabel alloc]initWithFrame:CGRectMake(20, 40, WIDTH - 40, 80)]; 55 _label.backgroundColor = [UIColor blackColor]; 56 _label.textColor = [UIColor whiteColor]; 57 _label.textAlignment = NSTextAlignmentRight; 58 _label.font = [UIFont systemFontOfSize:30]; 59 _label.lineBreakMode = NSLineBreakByTruncatingHead; 60 _label.text = @"0"; 61 [self.view addSubview:_label]; 62 63 UIButton *clearBtn = [[UIButton alloc]initWithFrame:CGRectMake(20, 130, (WIDTH-55)/4, (WIDTH-55)/4)]; 64 [clearBtn setTitle:@"C" forState:UIControlStateNormal]; 65 66 [clearBtn setImage:[UIImage imageNamed:@"ccc01.png"] forState:UIControlStateNormal]; 67 clearBtn.tag = 1; 68 [clearBtn addTarget:self action:@selector(deleteInfo:) forControlEvents:UIControlEventTouchUpInside]; 69 [self.view addSubview:clearBtn]; 70 71 UIButton *deleteBtn = [[UIButton alloc]initWithFrame:CGRectMake(WIDTH-100, 130, (WIDTH-55)/4, (WIDTH-55)/4)]; 72 deleteBtn.tag = 2; 73 [deleteBtn setTitle:@"<-" forState:UIControlStateNormal]; 74 75 [deleteBtn setImage:[UIImage imageNamed:@"t02.png"] forState:UIControlStateNormal]; 76 [deleteBtn setImage:[UIImage imageNamed:@"t01.png"] forState:UIControlStateHighlighted]; 77 [deleteBtn addTarget:self action:@selector(deleteInfo:) forControlEvents:UIControlEventTouchUpInside]; 78 [self.view addSubview:deleteBtn]; 79 NSArray *arr = [NSArray arrayWithObjects:@"1",@"2",@"3",@"+",@"4",@"5",@"6",@"-",@"7",@"8",@"9",@"x",@".",@"0",@"=",@"/", nil]; 80 NSArray *back01 = @[num101,num201,num301,calj02,num401,num501,num601,caljj02,num701,num801,num901,calc02,caldd,num001,cald02,calcc02]; 81 NSArray *back02 = @[num102,num202,num302,calj01,num402,num502,num602,caljj01,num702,num802,num902,calc01,caldd,num002,cald01,calcc01]; 82 for (int i = 0; i< arr.count; i++) { 83 UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake(20+i%4*((WIDTH-55)/4 + 5), 220+i/4 * ((WIDTH-55)/4 +5), (WIDTH-55)/4, (WIDTH-55)/4)]; 84 btn.tag = i+1; 85 [btn setImage:[back01 objectAtIndex:i] forState:UIControlStateNormal]; 86 [btn setImage:[back02 objectAtIndex:i] forState:UIControlStateHighlighted]; 87 [btn setTitle:[arr objectAtIndex:i] forState:UIControlStateNormal]; 88 [btn addTarget:self action:@selector(manage:) forControlEvents:UIControlEventTouchUpInside]; 89 [self.view addSubview:btn]; 90 91 } 92 flag = NO; 93 a = 0; 94 } 95 -(void)deleteInfo:(UIButton *)btn{ 96 if (btn.tag == 1) { 97 _label.text = @"0"; 98 a = 0; 99 }else{ 100 if (_label.text.length == 1) { 101 _label.text = @"0"; 102 return; 103 } 104 _label.text = [_label.text substringToIndex:_label.text.length-1]; 105 } 106 } 107 -(void)manage:(UIButton *)btn{ 108 if (btn.tag%4 == 0||btn.tag == 15) { 109 flag = YES; 110 b = a; 111 a = (int)btn.tag; 112 // NSLog(@"%f",b); 113 if (b == 0) { 114 result = [_label.text floatValue]; 115 }else{ 116 switch (b/4) { 117 case 1: 118 result += [_label.text floatValue]; 119 break; 120 case 2: 121 result -= [_label.text floatValue]; 122 break; 123 case 3: 124 result *= [_label.text floatValue]; 125 break; 126 case 4: 127 result /= [_label.text floatValue]; 128 break; default: 129 130 break; 131 } 132 133 } 134 if (result > (int)result) { 135 _label.text = [NSString stringWithFormat:@"%.2f",result]; 136 }else{ 137 _label.text = [NSString stringWithFormat:@"%d",(int)result]; 138 } 139 if (btn.tag == 15) { 140 result = 0; 141 a = 0; 142 } 143 144 }else if(btn.tag != 13){ 145 if ([_label.text isEqualToString:@"0"]) { 146 _label.text = @""; 147 } 148 if (flag == YES) { 149 flag = NO; 150 _label.text = @""; 151 } 152 if (btn.tag == 14) { 153 _label.text = [_label.text stringByAppendingString:@"0"]; 154 }else{ 155 _label.text = [_label.text stringByAppendingFormat:@"%zi",btn.tag - btn.tag/4]; 156 } 157 }else{ 158 NSRange range = [_label.text rangeOfString:@"."]; 159 if (range.location == NSNotFound) { 160 _label.text = [_label.text stringByAppendingString:@"."]; 161 } 162 } 163 } 164 - (void)didReceiveMemoryWarning { 165 [super didReceiveMemoryWarning]; 166 // Dispose of any resources that can be recreated. 167 } 168 169 @end
这就是全部的内容了,希望能够帮到有用的同学们
这个没有实现里四则运算,只能在按第二个运算符的时候计算出上一个运算符元算出来的结果在进行下一步计算
如果有错误的地方,希望大家指出,小弟感激不尽
下面给一个Demo的下载地址:https://github.com/sosoneo/Calculator