zoukankan      html  css  js  c++  java
  • 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;

        }

    }

     

  • 相关阅读:
    ANSI编码和Unicode编码的不同[转]
    [bash script]改进版目录和文件显示
    [bash script] Typed Variables
    六年了,留几句话吧
    读点书吧
    如果MFC的消息映射表需要排序...
    谈谈我们的开发流程
    寻找总和为n的连续子数列之算法分析
    在Windows下编译FreeCAD
    给定一个数组,找出不在数组中的最小的那个数字
  • 原文地址:https://www.cnblogs.com/sxsy-2015/p/4887226.html
Copyright © 2011-2022 走看看