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];
  • UIAlertView IOS9之前版本

    复制代码
     UIAlertView errView = [[UIAlertView alloc] initWithTitle:@"error" message:message delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil, nil];
    
      [errView show]

实现逻辑

复制代码
  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];

切换 主题

使用控件

  • UISwitch 开关组件
  • UISegmentedControl多选框

基本用法

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

复制代码
[sc addTarget:self action:@selector(changeThemeBystring:) forControlEvents:UIControlEventValueChanged];

代码实现

复制代码
-(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;          

    }

}

##效果展示

相关推荐
李长渊哦8 分钟前
Qoder 自定义子智能体(Subagent)学习笔记
chrome·笔记·学习
pixelpilot16 分钟前
Deta Surf:把笔记、文件和网页塞进同一个 AI 工作台
笔记·其他
蒸蒸yyyyzwd1 小时前
学习笔记 复盘
笔记·八股
旖旎夜光1 小时前
【C++ 基础入门】命名空间、输入输出、缺省参数与函数重载
开发语言·c++·笔记·学习
茶底世界之下3 小时前
斜光下的旧自行车:用 Awaking 留一版复古胶片色
ios·app·产品
一支蜉蝣4 小时前
Day26 XD安全学习笔记--PHP 应用&模版引用&Smarty渲染&MVC 模型&数据联动&RCE 安全
笔记·网络安全·html·php
東隅已逝,桑榆非晚4 小时前
算法3.双指针法-快乐数
c++·笔记·学习·算法
欢欢李5 小时前
【LTE L3 笔记 01】LTE空口特点
笔记·无线通信·物理层·lte·空口协议
ZZHow10246 小时前
神经网络与深度学习笔记_Day1
人工智能·pytorch·笔记·python·深度学习·神经网络·机器学习
ACP广源盛139246256736 小时前
选型笔记:HDMI2.1 四进一出切换中继方案 GSV6705@ACP 评估
笔记·硬件架构·硬件工程·视频·国产芯片