UIControl及其子类分段视图,滑块,开关,stepper

 

视图控制器的子视图控制器

//先创建子视图控制器

//将子视图控制器的头文件引到根视图控制器中,创建属性

//在ViewDidLoad外面写方法

-(void)initChildViewController{

//创建子视图控制器的对象

//最后在viewDidLoad中将此方法实现

[self  initChildViewController];

 

 

#pragma mark --- 添加子controller的方法 ---

- (void)initChildViewController

{

    // 第一种情况 frame 带滑动效果

 

    /*

    self.oneViewVc = [[OneViewController alloc]init];

    self.oneViewVc.view.backgroundColor = [UIColor redColor];

    self.oneViewVc.view.frame = CGRectMake(0, 0, 375, 667);

    // 添加子控制器 self 相当于就是RootViewController

     [self addChildViewController:_oneViewVc];

    // 将子控制器的view 添加到 self.view

    [self.view addSubview:_oneViewVc.view];

    [_oneViewVc release];

    

    

    // 第二个子视图控制器

    self.twoViewVc = [[TwoViewController alloc]init];

    self.twoViewVc.view.backgroundColor = [UIColor yellowColor];

    self.twoViewVc.view.frame = CGRectMake(375 * 1, 0, 375, 667);

    [self addChildViewController:_twoViewVc];

    [self.view addSubview:_twoViewVc.view];

    [_twoViewVc release];

 

    

    // 第三个子视图控制器

    self.threeViewVc = [[ThreeViewController alloc]init];

    self.threeViewVc.view.backgroundColor = [UIColor greenColor];

    self.threeViewVc.view.frame = CGRectMake(375 * 2, 0, 375, 667);

    [self addChildViewController:_threeViewVc];

    [self.view addSubview:_threeViewVc.view];

    [_threeViewVc release];

*/

    

    // 第二种情况 没有frame 不带滑动效果 通过hidden 实现界面切换

    /*

    self.oneViewVc = [[OneViewController alloc]init];

    self.oneViewVc.view.backgroundColor = [UIColor redColor];

    // 添加子控制器 self 相当于就是RootViewController

    [self addChildViewController:_oneViewVc];

    //

    //self.oneViewVc.view.hidden = YES;

    // 将子控制器的view 添加到 self.view

    [self.view addSubview:_oneViewVc.view];

    [_oneViewVc release];

    

    

    // 第二个子视图控制器

    self.twoViewVc = [[TwoViewController alloc]init];

    self.twoViewVc.view.backgroundColor = [UIColor yellowColor];

    //self.twoViewVc.view.hidden = YES;

    [self addChildViewController:_twoViewVc];

    [self.view addSubview:_twoViewVc.view];

    [_twoViewVc release];

    

    

    // 第三个子视图控制器

    self.threeViewVc = [[ThreeViewController alloc]init];

    self.threeViewVc.view.backgroundColor = [UIColor greenColor];

    //self.threeViewVc.view.hidden = YES;

    [self addChildViewController:_threeViewVc];

    [self.view addSubview:_threeViewVc.view];

    [_threeViewVc release];

    */

    

}

 

 

 

 

 

 

 

一 UISegmentedControl-----分段控制

//装载分栏视图的所有标题

NSArray *titleArray = @[@“1”,@“2”,@‘3”];

//创建对象

UISegmentedControl  *segment = [[UISegmentControl alloc]initWithItems:titleArray];

segment.frame = CGRectMake();

//设置填充颜色,字体颜色,边框颜色,

segment.tintColor = [UIColor  redColor];

//分栏是从左到右 从0开始,一上来显示的是哪一个分栏就是被选中状态

segment.selectedSegmentIndex = 0;

//设置选中效果,默认是NO,  YES是选中之后立刻消失

segment.momentary = YES;

//添加事件   UISegment 分栏视图  UISlide 滑条  UISwitch开关  我们的点击方式都是用UIControlEventValueChanged

[segment    addTarget:self  action:@selector(segmentAction:)for Control Events:UIControlEventValueChanged];

//添加到RootViewController上面的View上面

[self.view  addSubview:segment];

 

 

二 UISlider ----滑块,交互打开可以滑动  交互关闭不可以滑动默认交换是打开的

UISlider  *slider  = []

//一般不给背景颜色

slider.backgroundColor = 

//设置小于当前值的  滑条颜色(划过区域的颜色)

slider.minimumTrackTintColor = [];

//设置大于当前值的 滑条颜色(空白区域的颜色)

slider.maximumTrackTintColor = [];

//设置滑块的颜色(小圆圈)

slider.thumbTintColor = [];

//设置最小值默认是0

slider.minimumValue = 0;

//设置最大值

slider .maximumValue = 1;

//设置当前值

slider.value = 0,5;

//设置决定触发方法是不是跟着滑条的移动而实时触发

//默认是YES 实时触发事件

//如果是NO  是等待用户  滑动完成之后  并且松手 才会触发事件

slider.continuous = NO;

//让slider竖着  相当于旋转了90度, 改变的是transform

slider.transform  = CGAffineTransformMakeRotation(M_PI_2*3);

//添加事件  厨房方法

slider  addTarget:self  action:@selector(sliderAction:)forControlEvents:UIControlEventValueChanged];

 

 

三 UISwitch   开关

//不管switch的frame给到多大  只有X和Y 起作用,宽和高不会发生变化

//switch和系统关键字重名,命名是要另起名字

UISwitch  *mySwitch = [];

//一般是使用默认颜色

//圆球颜色

mySwitch.thumbTintColor = 

mySwitch.onTintColor = 

//边框颜色

mySwitch.tintColor  = 

//设置成打开状态 默认是关闭状态

mySwitch.on = YES;

//添加触发事件

 

四  UIStepper   左减号  右加号

UIStepper *stepper = 

//控制放大  或者缩小的倍数  继承于UI Controller

//缩放倍数

stepper。stepValue = 0。5;

//stepper的初始值

stepper。value = 1;

//添加方法,ValueChange 类型

 

#pragma mark --- stepper放大缩小事件 ---

- (void)stepperAction:(UIStepper *)stepper

{

    

    UISegmentedControl *seg = self.view.subviews[0];

    seg.transform = CGAffineTransformMakeScale(stepper.value, stepper.value);

    /*

    // 记录老的中心

    CGPoint olderCenter = seg.center;

    

    seg.frame = CGRectMake(seg.frame.origin.x, seg.frame.origin.y,     200 + 200 * stepper.value,  30 + 30 * stepper.value);

 

    // 把最后一次变动的中心点重新赋值给center 方便下次在原先的基础上改变

    seg.center = olderCenter;

     */

    

}

 

 

#pragma mark --- 开关触发事件 ---

- (void)mySwitchAction:(UISwitch *)mySwitch

{

    // 开关控制滑条是否能够滑动

    UISlider *slider = self.view.subviews[1];

    if (mySwitch.on == YES)

    {

        slider.userInteractionEnabled = YES;//打开交互

    }

    else

    {

        slider.userInteractionEnabled = NO;//关闭交互

    }

}

 

 

 

#pragma mark --- 滑条触发事件 ---

- (void)sliderAction:(UISlider *)slider

{

    NSLog(@"滑动了");

    // 让滑动的值称为alpha的取值范围

//    if(slider.value <= 0.5)

//    {

//        self.view.alpha = 0.1;

//        return;

//    }

    self.view.alpha = slider.value;

 

}

 

 

#pragma mark --- 分栏视图点击事件 ---

- (void)segmentAction:(UISegmentedControl *)segment

{

    // 第一种情况 frame 带滑动效果

    /*

    if (segment.selectedSegmentIndex == 0)

    {

        NSLog(@"点击了第一个");

    }

    else if(segment.selectedSegmentIndex == 1)

    {

        NSLog(@"点击了第二个");

    }

    else if(segment.selectedSegmentIndex == 2)

    {

        NSLog(@"点击了第三个");

    }

     */

    /*

    if (segment.selectedSegmentIndex == 0)

    {

        [UIView animateWithDuration:0.1 animations:^{

            self.oneViewVc.view.frame = CGRectMake(375 * 0, 0, 375, 667);

            self.twoViewVc.view.frame = CGRectMake(375 * 1, 0, 375, 667);

            self.threeViewVc.view.frame = CGRectMake(375 * 2, 0, 375, 667);

 

        } completion:nil];

    }

    else if(segment.selectedSegmentIndex == 1)

    {

        [UIView animateWithDuration:0.1 animations:^{

            self.oneViewVc.view.frame = CGRectMake(- 375 * 1, 0, 375, 667);

            self.twoViewVc.view.frame = CGRectMake(375 * 0, 0, 375, 667);

            self.threeViewVc.view.frame = CGRectMake(375 * 1, 0, 375, 667);

 

        } completion:nil];

    }

    else if(segment.selectedSegmentIndex == 2)

    {

        [UIView animateWithDuration:0.1 animations:^{

            self.oneViewVc.view.frame = CGRectMake(- 375 * 2, 0, 375, 667);

            self.twoViewVc.view.frame = CGRectMake(- 375 * 1, 0, 375, 667);

            self.threeViewVc.view.frame = CGRectMake(375 * 0, 0, 375, 667);

        } completion:nil];

        

    }

   */

    

    /*

    // 等价于上面的代码

    [UIView animateWithDuration:0.1 animations:^{

        self.oneViewVc.view.frame = CGRectMake(- 375 * (segment.selectedSegmentIndex - 0), 0, 375, 667);

        self.twoViewVc.view.frame = CGRectMake(- 375 * (segment.selectedSegmentIndex - 1), 0, 375, 667);

        self.threeViewVc.view.frame = CGRectMake(- 375 * (segment.selectedSegmentIndex - 2), 0, 375, 667);

        

    } completion:nil];

     */

    

    // 第二种情况 通过hidden 控制界面的显示还是隐藏

    // 不管点的是谁 让所有控制器的View全部以藏掉

    /*

    for (UIViewController *vc in self.childViewControllers)

    {

        vc.view.hidden = YES;

    }

    // 再寻找 点击对应的控制器 让其显示出来

    UIViewController *tempVc = self.childViewControllers[segment.selectedSegmentIndex];

    tempVc.view.hidden = NO;

    */

    

    

    // 遍历所有子控制器 如果是要找的那个 就让它显示 别的都隐藏

    UIViewController *tempVc = self.childViewControllers[segment.selectedSegmentIndex];

    NSLog(@"%@",[tempVc class]);

    for (UIViewController *vc in self.childViewControllers)

    {

        // 判断我当前的所遍历到得这个controller 是不是属于(OneViewController)要找的这个类

        if ([vc isKindOfClass:[tempVc class]])

        {

            vc.view.hidden = NO;

        }

        else

        {

            vc.view.hidden = YES;

        }

    }

    

}

 

 

 

posted @ 2016-02-23 20:50  mingxing  阅读(205)  评论(0编辑  收藏  举报