UI简单计算器设计代码

#import "AppDelegate.h"

 #define kScreenWidth CGRectGetWidth([[UIScreen mainScreen] bounds])

#define kScreenHeight CGRectGetHeight([[UIScreen mainScreen] bounds])

#define kButtonWidth ((kScreenWidth - 5) / 4)

#define kButtonHeight kButtonWidth 

#define kButtonOffsetX 1

#define kButtonOffsetY 1

#define kButtonOriginY (kScreenHeight - (kButtonHeight + kButtonOffsetY) * 5)

@interface AppDelegate ()

{

    BOOL _isHave;

    BOOL _isResult;

}

@property (retain,nonatomic)NSString *string;

@end

@implementation AppDelegate

-(void)dealloc{

    [_window 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.window.backgroundColor = [UIColor blackColor];

    [self.window makeKeyAndVisible]; 

    /*

     AC +- % /

     7  8  9 *

     4  5  6 -

     1  2  3 +

     0      .  =

     */

    NSArray *titles = @[@[@"AC", @"+-", @"baifenhao", @"chuhao"], @[@"7", @"8", @"9", @"chenghao"], @[@"4", @"5", @"6", @"jianhao"], @[@"1", @"2", @"3", @"jiahao"], @[@"0",@"", @"dian", @"dengyu"]];

    for (int i = 0; i < titles.count; i++) {

        NSArray *subTitles = titles[i];

        for (int j = 0; j < subTitles.count; j++) {

            NSString *title = subTitles[j];

            if ([title isEqualToString:@""]) {

                continue;

            }    

            UIButton *aButton = [UIButton buttonWithType:UIButtonTypeCustom];

            aButton.tag=100+(10*i)+j;

            CGRect frame = CGRectMake(kButtonOffsetX + (kButtonWidth + kButtonOffsetX) * j, kButtonOriginY + (kButtonHeight + kButtonOffsetY) * i, kButtonWidth, kButtonHeight);

            if ([title isEqualToString:@"0"]) {

                frame.size.width = frame.size.width * 2 + kButtonOffsetX;

            } 

            aButton.frame = frame;

            NSString *normalImageName = [subTitles[j] stringByAppendingString:@"_btn_nor"];

            NSString *highlightedImageName = [subTitles[j] stringByAppendingString:@"_btn_highlighted"];

            [aButton setImage:[UIImage imageNamed:normalImageName] forState:UIControlStateNormal];

            [aButton setImage:[UIImage imageNamed:highlightedImageName] forState:UIControlStateHighlighted];

            [aButton setTitle:title forState:UIControlStateNormal];  

            [aButton addTarget:self action:@selector(handleButtonAction:) forControlEvents:UIControlEventTouchUpInside];            

            [self.window addSubview:aButton];           

        }

    }

    UITextField *aLabel=[[[UITextField alloc]initWithFrame:CGRectMake(0, 0, kScreenWidth, kScreenHeight-5*(kButtonHeight+kButtonOffsetY))]autorelease];

    aLabel.tag=1000;

    aLabel.backgroundColor=[UIColor blackColor];

    aLabel.clearsOnBeginEditing=YES;

    aLabel.enabled=NO;

    aLabel.text=@"0";

    aLabel.textColor=[UIColor whiteColor];

    aLabel.font=[UIFont fontWithName:@"Times New Roman" size:70];

    aLabel.textAlignment=NSTextAlignmentRight;

    [_window addSubview:aLabel];

    return YES;

}

-(void)handleButtonAction:(UIButton *)abutton{

    UITextField *label=(UITextField *)[_window viewWithTag:1000];

    switch (abutton.tag) {

        case 100:{

            label.text=@"0";

            _isHave=YES;

            break;

        }case 101:{

            float num=[label.text floatValue];

            NSNumber *number=[NSNumber numberWithFloat:-num];

            label.text=[NSString stringWithFormat:@"%@",number];

            break;

        }case 102:{

            float num=[label.text floatValue];

            NSNumber *number=[NSNumber numberWithFloat:(num/100)];

            label.text=[NSString stringWithFormat:@"%@",number];

            break;

        }case 110:

            case 111:

            case 112:

            case 120:

            case 121:

            case 122:

            case 130:

            case 131:

            case 132:

        case 140:{

            label.clearsOnBeginEditing=YES;

            if (_isHave||[label.text isEqualToString:@"0"]||_isResult) {

                label.text=@"";

                label.text=[label.text stringByAppendingString:abutton.currentTitle];

            }else{

                label.text=[label.text stringByAppendingString:abutton.currentTitle];

            }

            _isHave=NO;

            _isResult=NO;

            break;

        }case 142:{

            if ([label.text containsString:@"."]) {

//                label.text=[label.text stringByAppendingString:@""];

            }else{

            label.text=[label.text stringByAppendingString:@"."];

            }

            break;

        }

        case 103:

            case 113:

            case 123:

        case 133:{

            self.string=[label.text stringByAppendingString:abutton.currentTitle];

            _isHave=YES;

            break;

        }case 143:{

            if ([self.string hasSuffix:@"jiahao"]) {

                float value1=[self.string floatValue];

                float value2=[label.text floatValue];

                NSNumber *number=[NSNumber numberWithFloat:(value1+value2)];

                label.text=[NSString stringWithFormat:@"%@",number];

                self.string=@"";

                _isResult=YES;

            }else if([self.string hasSuffix:@"jianhao"]) {

                float value1=[self.string floatValue];

                float value2=[label.text floatValue];

                NSNumber *number=[NSNumber numberWithFloat:(value1-value2)];

                label.text=[NSString stringWithFormat:@"%@",number];

                self.string=@"";

                _isResult=YES;

            }else if([_string hasSuffix:@"chenghao"]) {

                float value1=[self.string floatValue];

                float value2=[label.text floatValue];

                NSNumber *number=[NSNumber numberWithFloat:(value1*value2)];

                label.text=[NSString stringWithFormat:@"%@",number];

                self.string=@"";

                _isResult=YES;

            }else if([self.string hasSuffix:@"chuhao"]) {

                float value1=[self.string floatValue];

                float value2=[label.text floatValue];

                NSNumber *number=[NSNumber numberWithFloat:(value1/value2)];

                label.text=[NSString stringWithFormat:@"%@",number];

                self.string=@"";

                _isResult=YES;

            }

            break;

        }

        default:

            break;

    }

}

 

原文地址:https://www.cnblogs.com/sxsy-2015/p/4887226.html