zoukankan      html  css  js  c++  java
  • OtherViews系统控件

    效果

     特点

    1).都是系统自己的控件,只是做一个基础知识的归纳总结

    源码

    github:https://github.com/makingitbest/OtherViews

    细节

    1.UISwitch

    #import "ViewController_0.h"
    
    @interface ViewController_0 ()
    
    @end
    
    @implementation ViewController_0
    
    - (void)viewDidLoad {
        
        [super viewDidLoad];
        
        // initWithFrame 并不能调整按钮的大小,只能设置它的位置.
        UISwitch *swtch      = [[UISwitch alloc] initWithFrame:CGRectMake(100, 150, 100, 100)];
        swtch.tintColor      = [UIColor redColor];   // 关闭状态下的颜色
        swtch.onTintColor    = [UIColor blueColor];  // 打开状态下的颜色
        swtch.thumbTintColor = [UIColor brownColor]; // 滑块颜色
        [swtch setOn: YES]; //设置打开按钮,显示的是打开状态的颜色;事实上默认是关闭按钮
        [self.view addSubview:swtch];
        
        swtch.onImage = [UIImage imageNamed:@"onimage"]; //在没有设置onTintColor的时候有效,其他事件无效
        swtch.offImage = [UIImage imageNamed:@"onimage"]; //在没有设置tintColor的时候有效,其他事件无效
    }
    
    @end

    2.UISlider

    #import "ViewController_1.h"
    
    @interface ViewController_1 ()
    
    @property (nonatomic, strong) UILabel *label;
    
    @end
    
    @implementation ViewController_1
    
    - (void)viewDidLoad {
        
        [super viewDidLoad];
        
        // 滑动按钮的大小没法改变
        UISlider *slider    = [[UISlider alloc] initWithFrame:CGRectMake(50, 250, 220, 50)];
        slider.minimumValue = 0;
        slider.maximumValue = 10;
        [slider addTarget:self action:@selector(valueChanged:) forControlEvents:UIControlEventValueChanged];
        [self.view addSubview:slider];
        
        slider.layer.borderWidth = 1;
        
        self.label                 = [[UILabel alloc] initWithFrame:CGRectMake(50, 100, 200, 50)];
        self.label.backgroundColor = [UIColor yellowColor];
        self.label.text            = @"监控slider";
        [self.view addSubview:self.label];
    }
    
    - (void)valueChanged:(UISlider *)slider {
    
        self.label.text = [NSString stringWithFormat:@"%.2f",slider.value];
    }
    
    @end

    3.UIProgressView

    #import "ViewController_2.h"
    
    @interface ViewController_2 ()
    
    @property (nonatomic, strong) UIProgressView *progressView;
    @property (nonatomic, strong) NSTimer        *timer;
    
    @end
    
    @implementation ViewController_2
    
    - (void)viewDidLoad {
        
        [super viewDidLoad];
        
        // 不能设置 progressView 的高度
        self.progressView                   = [[UIProgressView alloc] initWithFrame:CGRectMake(50, 100, 220, 40)];
        self.progressView.trackTintColor    = [UIColor grayColor];
        self.progressView.progressTintColor = [UIColor greenColor];
        [self.view addSubview:self.progressView];
        
        self.timer = [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(scheduledTimer:) userInfo:nil repeats:YES];
    }
    
    - (void)scheduledTimer:(NSTimer *)timer {
    
        self.progressView.progress += 0.5;
    }
    
    @end

    4.UIAlertController

    #import "ViewController_3.h"
    
    typedef enum : NSUInteger {
        
        kButtonStyleOne,
        kButtonStyleTwo,
        kButtonStyleThree,
        
    } EViewController_3;
    @interface ViewController_3 ()
    
    @property (nonatomic, strong) UIButton *buttonStyle1;
    @property (nonatomic, strong) UIButton *buttonStyle2;
    @property (nonatomic, strong) UIButton *buttonStyle3;
    
    @property (nonatomic, strong) UIAlertAction *secureTextAlertAction;
    
    @end
    
    @implementation ViewController_3
    
    - (void)viewDidLoad {
        
        [super viewDidLoad];
        
        self.buttonStyle1                 = [[UIButton alloc] initWithFrame:CGRectMake(10, 80, 200, 50)];
        self.buttonStyle1.backgroundColor = [UIColor grayColor];
        self.buttonStyle1.tag             = kButtonStyleOne;
        self.buttonStyle1.titleLabel.font = [UIFont systemFontOfSize:12];
        [self.buttonStyle1 setTitle:@"点击弹出表单ActionSheet" forState:UIControlStateNormal];
        [self.buttonStyle1 addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];
        [self.buttonStyle1 setTintColor:[UIColor redColor]];
        [self.view addSubview:self.buttonStyle1];
        
        self.buttonStyle2                 = [[UIButton alloc] initWithFrame:CGRectMake(10, 150, 200, 50)];
        self.buttonStyle2.backgroundColor = [UIColor grayColor];
        self.buttonStyle2.tag             = kButtonStyleTwo;
        self.buttonStyle2.titleLabel.font = [UIFont systemFontOfSize:12];
        [self.buttonStyle2 setTitle:@"点击弹出提示框 AlertView" forState:UIControlStateNormal];
        [self.buttonStyle2 addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];
        [self.buttonStyle2 setTintColor:[UIColor redColor]];
        [self.view addSubview:self.buttonStyle2];
        
        self.buttonStyle3                 = [[UIButton alloc] initWithFrame:CGRectMake(10, 220, 120, 50)];
        self.buttonStyle3.backgroundColor = [UIColor grayColor];
        self.buttonStyle3.tag             = kButtonStyleThree;
        self.buttonStyle3.titleLabel.font = [UIFont systemFontOfSize:12];
        [self.buttonStyle3 setTitle:@"有输入框的提示框" forState:UIControlStateNormal];
        [self.buttonStyle3 addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];
        [self.buttonStyle3 setTintColor:[UIColor redColor]];
        [self.view addSubview:self.buttonStyle3];
    }
    
    - (void)buttonClick:(UIButton *)button {
        
        // UIAlertView,UIActionSheet已被废弃,使用下面UIAlertController的两种style模式代替
        /*
         preferredStyle有两个形式: UIAlertControllerStyleActionSheet 表单模式  替代了UIActionSheet
                                UIAlertControllerStyleAlert  弹出框模式       替代了UIAlertView
         */
        
        if (button.tag == kButtonStyleOne) {
            
            UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"选择" message:@"你是男生还是女生" preferredStyle:UIAlertControllerStyleActionSheet];
            
            UIAlertAction *action1 = [UIAlertAction actionWithTitle:@"男生" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
                
                NSLog(@"男生");
            } ];
            
            UIAlertAction *action2 = [UIAlertAction actionWithTitle:@"女生" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
                
                NSLog(@"女生");
            } ];
            
            [alertController addAction:action1];
            [alertController addAction:action2];
            
            [self presentViewController:alertController animated:YES completion:nil];
            
        } else if (button.tag == kButtonStyleTwo) {
            
            UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"选择" message:@"是否确定选择" preferredStyle:UIAlertControllerStyleAlert];
            
            UIAlertAction *action1 = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
                
                NSLog(@"确认");
            } ];
            
            UIAlertAction *action2 = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
                
                NSLog(@"取消");
            } ];
            
            [alertController addAction:action1];
            [alertController addAction:action2];
            
            [self presentViewController:alertController animated:YES completion:nil];
            
        } else if (button.tag == kButtonStyleThree) {
        
            UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"选择" message:@"是否确定选择" preferredStyle:UIAlertControllerStyleAlert];
            
            // 添加输入框
            [alertController addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
               
                // 设置textField基本属性
                textField.secureTextEntry = YES;
                [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleTextFieldTextDidChangeNotification:) name:UITextFieldTextDidChangeNotification object:textField];
            }];
            
            UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
                
                NSLog(@"取消");
                [[NSNotificationCenter defaultCenter] removeObserver:self name:UITextFieldTextDidChangeNotification object:alertController.textFields.firstObject];
            }];
            
            UIAlertAction *otherAction = [UIAlertAction actionWithTitle:@"其他" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
                
                NSLog(@"其他");
                [[NSNotificationCenter defaultCenter] removeObserver:self name:UITextFieldTextDidChangeNotification object:alertController.textFields.firstObject];
            }];
            
            otherAction.enabled = NO;
    
            // Hold onto the secure text alert action to toggle the enabled/disabled state when the text changed.
            self.secureTextAlertAction = otherAction;
    
            [alertController addAction:cancelAction];
            [alertController addAction:otherAction];
            
            [self presentViewController:alertController animated:YES completion:nil];
        }
    }
    
    - (void)handleTextFieldTextDidChangeNotification:(NSNotification *)notification {
       
        UITextField *textField = notification.object;
        
        // Enforce a minimum length of >= 5 characters for secure text alerts.
        self.secureTextAlertAction.enabled = textField.text.length >= 5;
    }
    
    @end

    5.UIActivityIndicatorVier

    #import "ViewController_4.h"
    
    @interface ViewController_4 ()
    
    @end
    
    @implementation ViewController_4
    
    - (void)viewDidLoad {
        
        [super viewDidLoad];
        
        // init 无法控制菊花的大小
        UIActivityIndicatorView * indicatorView = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
        indicatorView.color                     = [UIColor orangeColor];
        [self.view addSubview:indicatorView];
        
        indicatorView.layer.borderWidth = 1;
        indicatorView.transform         = CGAffineTransformMakeScale(2, 2); // 将菊花放大了2倍
        [indicatorView startAnimating];
        [indicatorView stopAnimating];
        
        indicatorView.hidesWhenStopped = NO;// 停止后不隐藏
    }
    
    @end

    6.UISegmentedControl

    #import "ViewController_5.h"
    
    @interface ViewController_5 ()
    
    @end
    
    @implementation ViewController_5
    
    - (void)viewDidLoad {
        
        [super viewDidLoad];
        
        NSArray *itemArray = @[@"添加", @"1", @"删除"];
        
        UISegmentedControl *segmented = [[UISegmentedControl alloc] initWithItems:itemArray];
        segmented.frame               = CGRectMake(10, 100, 300, 50);
        segmented.momentary           = YES; // 点击后回复原样
        [segmented addTarget:self action:@selector(segmentedAction:) forControlEvents:UIControlEventValueChanged];
        [self.view addSubview:segmented];
    
    //    segmented.selectedSegmentIndex = 0; // 总是选择第一个
        segmented.tintColor = [UIColor orangeColor];
    }
    
    
    - (void)segmentedAction:(UISegmentedControl *)segmented {
        
        if (segmented.selectedSegmentIndex == 0) {
            
            // 点击index= 0的位置 ==》就在index= 0的后面加一个
            [segmented insertSegmentWithTitle:@"" atIndex:1 animated:YES];
            
            NSLog(@"segmented.numberOfSegments ==%ld", segmented.numberOfSegments);
    
        } else if (segmented.selectedSegmentIndex == segmented.numberOfSegments - 1){
            
            
            if (segmented.numberOfSegments ==  3) {
                
                return;
            }
            
            //点击最后一个的位置==》就删除index = 1的位置
            [segmented removeSegmentAtIndex:1 animated:YES];
            
            // 拿到segment的总数量
            NSLog(@"segmented.numberOfSegments ==%ld", segmented.numberOfSegments);
        }
    }
    
    @end

    7.UITextView

    #import "ViewController_6.h"
    
    @interface ViewController_6 () <UITextViewDelegate>
    
    @end
    
    @implementation ViewController_6
    
    - (void)viewDidLoad {
        
        [super viewDidLoad];
        
        self.automaticallyAdjustsScrollViewInsets = NO;
        
        UITextView *textView = [[UITextView alloc] init];
        textView.frame       = CGRectMake(10, 100, 300, 200);
        textView.layer.borderWidth = 1;
        textView.font              = [UIFont boldSystemFontOfSize:20];
        textView.delegate          = self;
        [self.view addSubview:textView];
        
    }
    
    - (BOOL)textViewShouldBeginEditing:(UITextView *)textView {
        
        //是否允许编辑(获得焦点)
        return YES;
    }
    
    - (BOOL)textViewShouldEndEditing:(UITextView *)textView {
        
        //是否允许结束编辑(失去焦点)
        return YES;
    }
    
    - (void)textViewDidBeginEditing:(UITextView *)textView {
    
        //当已经获取焦点时,调用这个方法
    }
    
    - (void)textViewDidEndEditing:(UITextView *)textView {
        
        //当结束编辑
    }
    
    //返回值YES,表示可以继续编辑,返回NO表示不可编辑
    
    - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
        
        //第二个参数:
        //第三个参数:表示将要输入的内容
        //返回值表示:已有内容可不可以被改变
        
    //     NSLog(@"textView.text-->%@ range(%lu,%lu) text-->%@",textView.text,(unsigned long)range.location,(unsigned long)range.length,text);
    //    
    //    if (textView.text.length + text.length > 10) {
    //        return NO;
    //    }
    //    
        return YES;
    }
    
    - (void)textViewDidChange:(UITextView *)textView {
        
    }
    
    @end

    8.UIStepper

    #import "ViewController_7.h"
    
    @interface ViewController_7 ()
    
    @property (nonatomic, strong) UILabel *label;
    
    @end
    
    @implementation ViewController_7
    
    - (void)viewDidLoad {
        
        [super viewDidLoad];
        
        UIStepper *stepper   = [[UIStepper alloc] initWithFrame:CGRectMake(10, 100, 100, 50)];
        stepper.minimumValue = 0.0f;
        stepper.maximumValue = 20.0f;
        stepper.stepValue    = 2;
        stepper.tintColor    = [UIColor orangeColor];
        [stepper addTarget:self action:@selector(stepChaged:) forControlEvents:UIControlEventValueChanged];
        [self.view addSubview:stepper];
        
        self.label = [[UILabel alloc] initWithFrame:CGRectMake(10, 180, 100, 40)];
        self.label.textAlignment = NSTextAlignmentCenter;
        self.label.layer.borderWidth = 1.0f;
        self.label.text  = @"开始";
        [self.view addSubview:self.label];
        
        //设置循环
        stepper.wraps = YES;
        
        //设置自动加减
        stepper.autorepeat = YES;
    }
    
    - (void)stepChaged:(UIStepper *)stepper {
    
        self.label.text = [NSString stringWithFormat:@"%f", stepper.value];
    }
    
    @end
  • 相关阅读:
    vue在new的时候做了什么???
    vue中关于this的指向
    jquery 的本地存储 localStorage
    解读vue实例的双向绑定源码
    node修改数据遇到的坑
    node.js邮箱验证码
    webpack基础配置
    获取时间差。
    js获取时间方法
    node的buffer转换为字符串
  • 原文地址:https://www.cnblogs.com/makingitbest/p/6530946.html
Copyright © 2011-2022 走看看