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;          

    }

}

##效果展示

相关推荐
二哈赛车手21 分钟前
新人笔记---实现简易版的rag的bm25检索(利用ES),以及RAG上传时的ES与向量数据库双写
java·数据库·笔记·spring·elasticsearch·ai
qiaozhangchi39 分钟前
求解器学习笔记
笔记·python·学习
不会编程的懒洋洋1 小时前
C# P/Invoke 基础
开发语言·c++·笔记·安全·机器学习·c#·p/invoke
xian_wwq1 小时前
【学习笔记】网络与数据安全领域强制性标准
笔记·学习
24白菜头1 小时前
【无标题】
c++·笔记·学习·harmonyos
suirosu2 小时前
痛风高尿酸血症的治疗方法
笔记·其他·微信·新浪微博
余生皆假期-2 小时前
YuanHub 源码分析【一】FlashDB 初始化与项目应用
笔记·单片机·嵌入式硬件
懋学的前端攻城狮3 小时前
iOS 列表性能优化实战:从 45fps 到 60fps 的蜕变
ios·性能优化·ui kit
做cv的小昊3 小时前
【TJU】研究生应用统计学课程笔记(6)——第二章 参数估计(2.4 区间估计)
人工智能·笔记·线性代数·算法·机器学习·数学建模·概率论
学机械的鱼鱼3 小时前
【学习笔记】QGroundControl安装与使用简明指南
笔记·学习