• IOS课程笔记[4-5] 计算器实现与更换主题 的使用


    计算

    控件介绍

    文本输入

    • 设置键盘格式为NumberPad
    • 字符串与数字转换方法 NSInteger num2 =[str2 integerValue];

    弹窗控件

    • UIAlertController 新版本弹窗
     UIAlertController *alert =    [UIAlertController alertControllerWithTitle:@"error" message:@"输入有误" preferredStyle:UIAlertControllerStyleAlert];
            UIAlertAction *action =[UIAlertAction  actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
    
                NSLog(@"取消");       
    
            }];
    
            [alert addAction:action];
    
            [self presentViewController:alert animated:YES completion:nil];
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • UIAlertView IOS9之前版本
       UIAlertView errView = [[UIAlertView alloc] initWithTitle:@"error" message:message delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil, nil];
    
        [errView show]
    
    
    • 1
    • 2
    • 3
    • 4

    实现逻辑

      NSLog(@" 点击按钮");
    
        //达到数字
    
        NSString *str1=  self.Num1Text.text;
    
        NSString *str2 = self.Num2Text.text;
    
        //转为数字
    
        NSInteger num1 =[str1 integerValue];
    
        NSInteger num2 =[str2 integerValue];
    
    //校验
    
        if (num1 ==0 || num2 ==0){
    
            UIAlertController *alert =    [UIAlertController alertControllerWithTitle:@"error" message:@"输入有误" preferredStyle:UIAlertControllerStyleAlert];
    
            
    
            UIAlertAction *action =[UIAlertAction  actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
    
                NSLog(@"取消");
    
                
    
            }];
    
            [alert addAction:action];
    
            [self presentViewController:alert animated:YES completion:nil];
    
            return ;
    
        }
    
        //相加
    
        NSInteger result =num1+num2;
    
        //展示结果
    
        self.ResultLabel.text =[NSString stringWithFormat:@"%zd",result];
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46

    切换 主题

    使用控件

    • UISwitch 开关组件
    • UISegmentedControl多选框

    基本用法

    -addTarget绑定点击或者切换事件

    [sc addTarget:self action:@selector(changeThemeBystring:) forControlEvents:UIControlEventValueChanged];
    
    
    • 1
    • 2

    代码实现

    
    
    -(void) loadTopView{
    
         
    
        //添加文本
    
        UILabel *lb=[[UILabel alloc] init];
    
        [lb setText:@"更换主题"];
    
        [lb setFrame:CGRectMake(5, 0, 400, 40)];
    
         [self.topView addSubview:lb];
    
        //开关
    
        UISwitch *sw =[[UISwitch alloc] init];
    
        [sw setFrame:CGRectMake(200, 0, 200, 40)];
    
        [sw addTarget:self action:@selector(changeTheme:) forControlEvents:UIControlEventTouchUpInside];
    
        
    
        [self.topView addSubview:sw];
    
        
    
        
    
        //多选框
    
        UISegmentedControl *sc =[[UISegmentedControl alloc] initWithItems:@[@"yellow",@"red",@"green"]] ;
    
        [sc setFrame:CGRectMake(5, 55, 300, 40)];
    
        [sc addTarget:self action:@selector(changeThemeBystring:) forControlEvents:UIControlEventValueChanged];
    
        [self.topView addSubview: sc];
    
        
    
        //控件位置
    
        [self.topView  setCenter:CGPointMake(self.view.frame.size.width/2, self.view.frame.size.height/2) ];
    
    }
    
    #pragma mark 更换主题
    
    - (void)changeTheme:(UISwitch *)sw{
    
        if(sw.isOn){
    
            self.view.backgroundColor= [UIColor whiteColor];
    
        }else{
    
            self.view.backgroundColor =[UIColor darkGrayColor];
    
        }
    
    }
    
    - (void)changeThemeBystring:(UISegmentedControl  *)sg{
    
        NSLog(@"%@",sg);
    
        switch  (sg.selectedSegmentIndex){
    
            case 0:            
    
                [self changeThemeBycolor:[UIColor yellowColor]];
    
                break;
    
            case 1:
    
                [self changeThemeBycolor:[UIColor redColor]];
    
                break;
    
            case 2:
    
                [self changeThemeBycolor:[UIColor greenColor]];
    
                break;          
    
        }
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94

    ##效果展示
    在这里插入图片描述

  • 相关阅读:
    干货!《阿里云可观测技术峰会演讲实录合辑》重磅发布
    【电源专题】电源芯片散热垫(PowerPAD)布局指南
    Pointnet++改进即插即用系列:全网首发Star_Block星型操作 |即插即用,提升特征提取模块性能
    山西电力市场日前价格预测【2023-09-17】
    【TensorFlow】P1 Google Colab 使用
    Java是值传递还是引用传递
    elementui select组件下拉框底部增加自定义按钮
    胡思乱想 ----2022/11/10
    全球11家银行争相布局量子金融计划
    第二篇:矩阵的翻转JavaScript
  • 原文地址:https://blog.csdn.net/iong_l/article/details/133872213