zoukankan      html  css  js  c++  java
  • UISlider,UISwitch,UIStepper,UISegmentControl之间的联动及功能

    #import "MainViewController.h"

    #define kScreenHeight CGRectGetHeight(self.view.bounds) //屏幕高度宏

    #define kScreenWidth CGRectGetWidth(self.view.bounds) //屏幕宽度宏

    @interface MainViewController ()

    @end

    @implementation MainViewController

    - (void)viewDidLoad {

        [super viewDidLoad];

        // Do any additional setup after loading the view.

        //分段控件

        

        UISegmentedControl *segmentControl = [[UISegmentedControl alloc] initWithItems:@[@"左视图",@"右视图"]];

        segmentControl.frame = CGRectMake(20, 50, kScreenWidth-40, 30);

        //设置分段的默认选中下标

        segmentControl.selectedSegmentIndex = 0;

      [segmentControl addTarget:self action:@selector(handleSegmentAction:) forControlEvents:UIControlEventValueChanged];

      [self.view addSubview:segmentControl];

      [segmentControl release];

        [self handleSegmentAction:segmentControl];

      //视图的宽度和间距

      CGFloat viewWidth = 120;

      CGFloat viewHeight = 200;

      CGFloat offsetX = (kScreenWidth -viewWidth*2)/3;

        for (int i = 0; i<2; i++) {

            UIView*aView=[[UIView alloc]initWithFrame:CGRectMake(offsetX+(viewWidth+offsetX)*i, 100, viewWidth, viewHeight)];

            aView.backgroundColor=i ? [UIColor greenColor]:[UIColor redColor];

            //加tag

            aView.tag = 200 + i;

            [self.view addSubview:aView];

            [aView release];

        }

        NSArray *colors = @[[UIColor redColor],[UIColor greenColor],[UIColor blueColor]];

        CGFloat offsetY = 20; //纵向偏移量

        for (int i = 0; i<colors.count; i++) {

            UISlider *aSlider = [[UISlider alloc] initWithFrame:CGRectMake(20, 400+(40+offsetY)*i, kScreenWidth-40, 40)];

            //设置最小值,最大值和当前值

            aSlider.minimumValue = 0;

            aSlider.maximumValue = 1;

            aSlider.value = 0;

            aSlider.minimumTrackTintColor = colors[i];

            aSlider.thumbTintColor = colors[i];

            //设置tag

            aSlider.tag = 300 + i;

            [aSlider addTarget:self action:@selector(handleSliderAction:) forControlEvents:UIControlEventValueChanged];

            [self.view addSubview:aSlider];

            [aSlider release];

        }

       

        

        UISwitch *aSwitch = [[UISwitch alloc] initWithFrame:CGRectMake(30, kScreenHeight-80, 0, 0)];

        aSwitch.on = NO; //设置开关当前状态,类似于分段的选中下标

        [aSwitch addTarget:self action:@selector(handleSwitchAction:) forControlEvents:UIControlEventValueChanged];

        [self.view addSubview:aSwitch];

        [aSwitch release];

        

        UIStepper *aStepper = [[UIStepper alloc] initWithFrame:CGRectMake(kScreenWidth-120, kScreenHeight-80, 0, 0)];

        aStepper.minimumValue = 200; //计步器的最小值,为视图的原始高度

        aStepper.maximumValue = 280; //计步器的最大值,为视图的最终高度

        aStepper.stepValue = 5; //每次增加的值

        aStepper.value = 200; //计步器的当前值

        [aStepper addTarget:self action:@selector(handleStepperAction:) forControlEvents:UIControlEventValueChanged];

        [self.view addSubview:aStepper];

        [aStepper release];

        //设置tag

        segmentControl.tag = 100;

        aSwitch.tag = 400;

        aStepper.tag = 401;

         [self handleSegmentAction:segmentControl];

    }

    -(void)handleSegmentAction:(UISegmentedControl *)sender{

        UISlider *redSlider = (UISlider *)[self.view viewWithTag:300];

        UISlider *greenSlider = (UISlider *)[self.view viewWithTag:301];

        UISlider *blueSlider = (UISlider *)[self.view viewWithTag:302];

        UISwitch *aSwitch = (UISwitch *)[self.view viewWithTag:400];

        UIStepper *aStepper = (UIStepper *)[self.view viewWithTag:401];

        UIView *currentView = [self.view viewWithTag:200 + sender.selectedSegmentIndex];

    //    aSwitch.on = currentView.hidden;

        [aSwitch setOn:currentView.hidden animated:YES];

        aStepper.value = CGRectGetHeight(currentView.frame);

        CGFloat red, green, blue;

        [currentView.backgroundColor getRed:&red green:&green blue:&blue alpha:nil];

        redSlider.value = red;

        greenSlider.value = green;

        blueSlider.value = blue;

    }

    -(void)handleSliderAction:(UISlider *)sender{

        //得到三个滑杆的当前值,作为颜色三原色红绿蓝的色值

        CGFloat red = [(UISlider *)[self.view viewWithTag:300] value];

        CGFloat green = [(UISlider *)[self.view viewWithTag:301] value];

        CGFloat blue = [(UISlider *)[self.view viewWithTag:302] value];

        //通过segmentControl当前选中的下标来获取被改变的视图

        UISegmentedControl *segmentControl = (UISegmentedControl *)[self.view viewWithTag:100];

        UIView *currentView = [self.view viewWithTag:200 + segmentControl.selectedSegmentIndex];

        //设定视图的背景颜色

        currentView.backgroundColor = [UIColor colorWithRed:red green:green blue:blue alpha:1];

    }

    -(void)handleSwitchAction:(UISwitch *)sender{

        UISegmentedControl *segmentControl = (UISegmentedControl *)[self.view viewWithTag:100];

        UIView *currentView = [self.view viewWithTag:200 + segmentControl.selectedSegmentIndex];

        currentView.hidden = sender.on;

    }

    -(void)handleStepperAction:(UIStepper *)sender{

        UISegmentedControl *segmentControl = (UISegmentedControl *)[self.view viewWithTag:100];

        UIView *currentView = [self.view viewWithTag:200 + segmentControl.selectedSegmentIndex];

        CGRect frame = currentView.frame;

        frame.size.height = sender.value;

        currentView.frame = frame;

        

    }

  • 相关阅读:
    Nginx 解决WebApi跨域二次请求以及Vue单页面问题
    微信小程序部署问题总结
    Webapi文档描述-swagger优化
    [AOP系列]Autofac+Castle实现AOP日志
    WebApi Ajax 跨域请求解决方法(CORS实现)
    MSDTC启用——分布式事务
    [钉钉通知系列]Jenkins发布后自动通知
    [AOP系列]Autofac+Castle实现AOP事务
    [钉钉通知系列]SVN提交后自动推送消息到钉钉群
    Vue H5 History 部署IIS上404问题
  • 原文地址:https://www.cnblogs.com/lz824129/p/4902781.html
Copyright © 2011-2022 走看看