UI 简单练习(联动实例)

#import "MainViewController.h"

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

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

@interfaceMainViewController ()

 

@end

 

@implementation MainViewController

 

- (void)viewDidLoad {

    [superviewDidLoad];

    // Do any additional setup after loading the view.

// 分段控件

    UISegmentedControl*segementControl=[[UISegmentedControlalloc]initWithItems:@[@"左视图",@"右视图"]];

    segementControl.frame=CGRectMake(20, 50, KScreenWidth-40, 30);

    

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

    segementControl.selectedSegmentIndex=0;

    [segementControl addTarget:selfaction:@selector(handleSegementAction:) forControlEvents:UIControlEventValueChanged];

    [self.view addSubview:segementControl];

    [segementControl release];

    

//视图的宽度和间距

    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?[UIColorgreenColor]:[UIColorredColor];

//        tag

        aView.tag=200+i;

        [self.view addSubview:aView];

        [aView release];

    }

        

//

        NSArray*colors=@[[UIColorredColor],[UIColorgreenColor],[UIColorblueColor]];

        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:selfaction:@selector(handleSliderAction:) forControlEvents:UIControlEventValueChanged];

            

            [self.view addSubview:aSlider];

            [aSlider release];

            

            }

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

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

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

        [self.view addSubview:aSwitch];

        [aSwitch release];

        

        UIStepper*aSteper=[[UIStepperalloc]initWithFrame:CGRectMake(KScreenWidth-120, kScreenHeight-80, 0, 0)];

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

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

        aSteper.stepValue=5;//每次增加值

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

        

        [aSteper addTarget:selfaction:@selector(handleSteperAction:) forControlEvents:UIControlEventValueChanged];

        [self.view addSubview:aSteper];

        [aSteper release];

        

//    设置 tag

    segementControl.tag=100;

    aSwitch.tag=400;

    aSteper.tag=401;

    

    [self handleSegementAction:segementControl];

        

}

 

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

//    根据当前值改变控件值.(逆向思维)

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

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

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

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

    UIStepper*aSteper=(UIStepper*)[self.viewviewWithTag:401];

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

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

    aSteper.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.viewviewWithTag:300]value];

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

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

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

    UISegmentedControl*segementControl=(UISegmentedControl*)[self.viewviewWithTag:100];

    UIView*currrentView=[self.view viewWithTag:200+segementControl.selectedSegmentIndex];

//    设定视图的背景颜色

    currrentView.backgroundColor=[UIColorcolorWithRed:red green:green blue:blue alpha:1];

    

    

    

}

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

    UISegmentedControl*segementControl=(UISegmentedControl*)[self.viewviewWithTag:100];

    UIView*currentView=[self.viewviewWithTag:200+segementControl.selectedSegmentIndex];

    currentView.hidden=sender.on;

    

    

    

    

    

    

}

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

    UISegmentedControl*segementControl=(UISegmentedControl*)[self.viewviewWithTag:100];

    UIView*currentView=[self.viewviewWithTag:200+segementControl.selectedSegmentIndex];

    CGRect frame=currentView.frame;

    frame.size.height=sender.value;

    currentView.frame=frame;

    

 

    

}

- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}

 

/*

#pragma mark - Navigation

 

// In a storyboard-based application, you will often want to do a little preparation before navigation

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    // Get the new view controller using [segue destinationViewController].

    // Pass the selected object to the new view controller.

}

*/

 

@end

 

原文地址:https://www.cnblogs.com/wjpn/p/4902782.html