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];
}
}