UIControl的两个子类 -- UISegmentedControl UISlider

来源:互联网 发布:实惠猪软件 编辑:程序博客网 时间:2024/06/16 14:46

UISegmentedControl – 分段控件

分段控件的初始化可用数组 但数组中的对象必须是字符串 或者 图片

如果选用图片初始化 必须使用镂空图

// 用字符串组成的数组初始化    NSArray *stringArray = @[@"第一段",@"第二段",@"第三段"];// 分段控件的初始化    UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:stringArray];// 分段控件添加至视图上    segmentedControl.frame = CGRectMake(20, 100, 300, 50);    segmentedControl.backgroundColor = [UIColor greenColor];    [self.view addSubview:segmentedControl];    [segmentedControl release];// 设置默认选中(从0开始)    segmentedControl.selectedSegmentIndex = 1;// 修改选中的颜色    segmentedControl.tintColor = [UIColor brownColor];// 修改中间段的宽度    [segmentedControl setWidth:200 forSegmentAtIndex:1];
// 用图片组成的数组初始化// 创建图片数组    UIImage *image1 = [UIImage imageNamed:@"01-refresh"];    UIImage *image2 = [UIImage imageNamed:@"02-redo"];    UIImage *image3 = [UIImage imageNamed:@"03-loopback"];    NSArray *imageArray = @[image1, image2, image3];// 创建分段控件 并添加到视图上       UISegmentedControl *segmentedControlImage = [[UISegmentedControl alloc] initWithItems:imageArray];    segmentedControlImage.backgroundColor = [UIColor orangeColor];    segmentedControlImage.frame = CGRectMake(40, 300, 300, 50);    segmentedControlImage.tintColor = [UIColor purpleColor];    segmentedControlImage.selectedSegmentIndex = 0;    [self.view addSubview:segmentedControlImage];    [segmentedControlImage release];// 添加一个点击事件// 选取UIControlEventValueChanged 实际上是检测了索引的变化    [segmentedControlImage addTarget:self action:@selector(segmentedAction:) forControlEvents:UIControlEventValueChanged];// 实现一个需求: 点击分段控件的不同按钮 视图颜色随之改变// 将三控制器设置为根视图控制器的子控制器(应将三控制器类设置根视图控制器的属性 方便取用)    self.grayVC = [[GrayViewController alloc] init];    [self addChildViewController:self.grayVC];    [self.view addSubview:self.grayVC.view];    [_grayVC release];    self.blueVC = [[BlueViewController alloc] init];    [self addChildViewController:self.blueVC];    [self.view addSubview:self.blueVC.view];    [_blueVC release];    self.greenVC = [[GreenViewController alloc] init];    [self addChildViewController:self.greenVC];    [self.view addSubview:self.greenVC.view];    [_greenVC release];    // 最前面的应该是segment    // 然后是默认选中按钮对应的视图    [self.view bringSubviewToFront:self.grayVC.view];    [self.view bringSubviewToFront:segmentedControlImage];}

实现分段控件添加的方法:

- (void)segmentedAction:(UISegmentedControl *)segmentedControl{    // 需求 判断出 点击了哪个分段按钮    // 每个分段按钮 控制一个界面 每个界面是一个控制器来控制 并且可以切换界面       NSLog(@"点了第%ld个",segmentedControl.selectedSegmentIndex);    // 通过索引切换不同的界面    switch (segmentedControl.selectedSegmentIndex) {        case 0:            [self.view insertSubview:self.grayVC.view belowSubview:segmentedControl];            break;        case 1:            [self.view insertSubview:self.greenVC.view belowSubview:segmentedControl];            break;        case 2:            [self.view insertSubview:self.blueVC.view belowSubview:segmentedControl];            break;        default:            break;    }

UISlider – 滑块控件

初始化 和 属性

// 初始化    UISlider *slider = [[UISlider alloc] initWithFrame:CGRectMake(50, 50, 300, 30)];// 设置背景色    slider.backgroundColor = [UIColor grayColor];// 设置最小值轨迹颜色    [slider setMinimumTrackTintColor:[UIColor greenColor]];// 设置最大值轨迹颜色    [slider setMaximumTrackTintColor:[UIColor purpleColor]];// 设置拖动按钮颜色    [slider setThumbTintColor:[UIColor brownColor]];// 设置图片    [slider setMinimumValueImage:[UIImage imageNamed:@"01-refresh"]];    [slider setMaximumValueImage:[UIImage imageNamed:@"03-loopback"]];    [slider setThumbImage:[UIImage imageNamed:@"01-refresh"] forState:UIControlStateNormal];    [slider setThumbImage:[UIImage imageNamed:@"02-redo"] forState:UIControlStateHighlighted];    [slider setThumbImage:[UIImage imageNamed:@"03-loopback"] forState:UIControlStateSelected];// 设置滑块的初值 最大值 最小值// 如果想设置初始位置 需要先把最大 最小值设置上// 再给初值 才会发生变化    slider.minimumValue = 0;    slider.maximumValue = 10;    slider.value = 10;    [self.view addSubview:slider];    [slider release];

给滑块控件添加方法

// 添加滑动事件    [slider addTarget:self action:@selector(sliderClick:) forControlEvents:UIControlEventValueChanged];

UIImageView的属性

在给滑块控件实现方法前 先了解一下UIImageView的一些属性

// imageView的初始化    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 100, self.view.frame.size.width, 500)];    imageView.backgroundColor = [UIColor purpleColor];    imageView.tag = 1000;    [self.view addSubview:imageView];    [imageView release];// 构建一个图片的数组(数组中元素多的话可以用这种循环方法)    NSMutableArray *arr = [NSMutableArray array];    for (int i = 1; i <= 10; i++) {        // 把图片的名字拼接出来        NSString *imageName = [NSString stringWithFormat:@"%d.jpg",i];        // 初始化每一张图片        UIImage *image = [UIImage imageNamed:imageName];        // 把图片添加到数组里        [arr addObject:image];    }// 设置imageView的播放动画的数组    imageView.animationImages = arr;// 设置时间间隔(播放完整一次10秒)    imageView.animationDuration = 10;// 设置重复次数(零代表无限次)    imageView.animationRepeatCount = 0;// 让动画开始    [imageView startAnimating];

实现滑块的方法

// 实现滑动事件- (void)sliderClick:(UISlider *)slider{    UIImageView *imageView = (UIImageView *)[self.view viewWithTag:1000];    if (slider.value == slider.maximumValue) {        // 为了美观 停止的时候 添加一张占位图        [imageView stopAnimating];        imageView.image = [UIImage imageNamed:@"005.jpg"];    }else{        imageView.animationDuration = slider.value;        [imageView startAnimating];    }}
0 0
原创粉丝点击