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;          

    }

}

##效果展示

相关推荐
肥肠可耐的西西公主4 分钟前
后端(FastAPI)学习笔记(CLASS 3):Tortoise ORM
笔记·学习·fastapi
PigeonGuan37 分钟前
C盘扩容笔记
笔记
JasmineX-12 小时前
数据结构——顺序表(c语言笔记)
c语言·开发语言·数据结构·笔记
夜流冰3 小时前
工程师 - Onion Architecture in Software Development
笔记
一位搞嵌入式的 genius4 小时前
前端开发核心技术与工具全解析:从构建工具到实时通信
前端·笔记
..过云雨4 小时前
04.【Linux系统编程】基础开发工具2(makefile、进度条程序实现、版本控制器Git、调试器gdb/cgdb的使用)
linux·笔记·学习
搜狐技术产品小编20235 小时前
CAEmitterLayer:iOS 中创建炫酷粒子效果的魔法工具
macos·ios·objective-c·cocoa
月屯5 小时前
docke笔记下篇
笔记
能不能别报错6 小时前
K8s学习笔记(二):Pod
笔记·学习·kubernetes