UI基础-UIControl及其子类

UISegmentedControl的使用

UISegmentedControl是iOS中的分段控件。 每个segment都能被点击,相当于集成了若干个button。 通常我们会点击不同的segment来切换不同的view。

常用方法和属性

创建方法1:

// 初始化的数组中 必须是 字符串 
NSArray *itemArray = @[@"第一段", @"第二段", @"第三段"];
// 分段按钮
//initWithItems:UISegmentedControl独有的初始化方法,用来创建多个分段 
UISegmentedControl *segmentControl = [[UISegmentedControl alloc] initWithItems:itemArray];
segmentControl.frame = CGRectMake(20, 100, 300, 50);
segmentControl.backgroundColor = [UIColor orangeColor];
// 设置默认选中(索引从0开始)
segmentControl.selectedSegmentIndex = 1;
// 修改选中的颜色
segmentControl.tintColor = [UIColor grayColor];
// 修改中间段宽度
[segmentControl setWidth:200 forSegmentAtIndex:1];
[self.view addSubview:segmentControl];
[segmentControl release];

创建方法2:

// 如果选用 图片初始化 必须选用镂空图
UIImage *image1 = [UIImage imageNamed:@"01-refresh"];
UIImage *image2 = [UIImage imageNamed:@"02-redo"];
UIImage *image3 = [UIImage imageNamed:@"03-loopback"];
NSMutableArray *arr = [NSMutableArray arrayWithObjects:image1, image2, image3, nil];

segment.frame = CGRectMake(0, 20, 375, 50);
segment.tintColor = [UIColor orangeColor];
segment.selectedSegmentIndex = 1;
segment.backgroundColor = [UIColor cyanColor];

// 添加点击事件
// 选取ValueChanged 实际上是监测 索引的变化
[segment addTarget:self action:@selector(segmtAction:) forControlEvents:(UIControlEventValueChanged)];
[self.view addSubview:segment];
[segment release];

这里写图片描述

例题: 判断出 点击了哪个分段按钮, 每个分段按钮 控制一个界面 每个界面由一个控制器来控制 并且可以切换界面。

1.有几个segment就创建几个控制器

self.firstVC = [[FirstViewController alloc] init];
self.secondVC = [[SecondViewController alloc] init];
self.thirdVC = [[ThirdViewController alloc] init];

2.添加子控制器 并且显示视图

[self addChildViewController:self.firstVC];
[self.view addSubview:self.firstVC.view];
[self addChildViewController:self.secondVC];
[self.view addSubview:self.secondVC.view];
[self addChildViewController:self.thirdVC];
[self.view addSubview:self.thirdVC.view];

3.释放

[self.firstVC release];
[self.secondVC release];
[self.thirdVC release];

4.最前面的应该是segment,然后默认选中第一界面视图 firstVC.view

[self.view bringSubviewToFront:self.firstVC.view];
[self.view bringSubviewToFront:segment];

5.实现segment的点击事件

- (void)segmtAction:(UISegmentedControl *)segment
{
switch (segment.selectedSegmentIndex) {
    case 0:
        [self.view bringSubviewToFront:self.firstVC.view];
        break;   

    case 1:
        [self.view bringSubviewToFront:self.secondVC.view];
        break;


    case 2:
        [self.view bringSubviewToFront:self.thirdVC.view];
        break;


    default:
        break;
}
[self.view bringSubviewToFront:segment];
}

UISlider的使用

UISlider是iOS中的滑块控件。
通常用于控制视频播放进度,控制音量等。
它也是继承于UIControl,滑块提供了一系列连续的值,滑块停在不同的位置,获取到滑块上的值也不同。

常用属性:

// 初始化
UISlider *slider = [[UISlider alloc] initWithFrame:CGRectMake(37.5, 100, 300, 30)];
slider.backgroundColor = [UIColor cyanColor];

// 设置轨迹颜色
[slider setMinimumTrackTintColor:[UIColor yellowColor]];
slider.maximumTrackTintColor = [UIColor purpleColor];

// 设置滑动按钮颜色(球)
slider.thumbTintColor = [UIColor grayColor];

// 设置最大值 和最小值 的图片
[slider setMinimumValueImage:[UIImage imageNamed:@"01-refresh"]];
[slider setMaximumValueImage:[UIImage imageNamed:@"03-loopback"]];
slider.selected = YES;
[slider setThumbImage:[UIImage imageNamed:@"03-loopback"] forState:(UIControlStateSelected)];
[slider setThumbImage:[UIImage imageNamed:@"02-redo"] forState:(UIControlStateNormal)];
[slider setThumbImage:[UIImage imageNamed:@"01-refresh"] forState:(UIControlStateHighlighted)];

// 设置滑块的初值 最大值 最小值
// 如果想设置初始位置 需要先把最大值 最小值设置上
// 再给初值 才会发生变化
slider.maximumValue = 10;
slider.minimumValue = 0;
slider.value = 2;

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

[self.view addSubview:slider];
[slider release];

UIImageView的使用

例题: ImageView动画(跑图)
silder控制 动画播放的时间间隔,并且 silder滑动到最大值 停止动画

self.imageView = [[UIImageView alloc] initWithFrame:CGRectMake(37.5, 150, 300, 300)];
self.imageView.backgroundColor = [UIColor lightGrayColor];
[self.view addSubview:self.imageView];
[self.imageView release];

// 构建一个图片的数组
NSMutableArray *imageArr = [NSMutableArray array];
for (int i = 1; i < 9; i++) {

// 把图片的名字 拼接出来
  NSString *imageName = [NSString stringWithFormat:@"%d",i];

 // 初始化每一张图片
  UIImage *image = [UIImage imageNamed:imageName];

// 把图片加到数组里
  [imageArr addObject:image];
}

// 设置imageView播放动画的数组
self.imageView.animationImages = imageArr;

// 设置时间间隔(播放完整一次10秒)
self.imageView.animationDuration = 10;

// 设置重复次数(零 代表无限次)
self.imageView.animationRepeatCount = 0;

// 让动画开始
[self.imageView startAnimating];

实现动画效果:(使用上面创建的Slider)

- (void)sliderAction:(UISlider *)slider
{
     NSLog(@"%.2f", slider.value);
     // 为了美观 停止的时候 添加一张占位图
     if (slider.value == slider.maximumValue) {
     [self.imageView stopAnimating];
     self.imageView.image = [UIImage imageNamed:@"8"];
}else {
     self.imageView.animationDuration = slider.value;
     [self.imageView startAnimating];
}
}

这里写图片描述

UIControl的作用

UIControl是所有控制控件(比如UIButton、UISlider、UISegmentedControl等)的基类。
只要跟控制有关的控件都是继承于该类。
UIControl的核⼼心功能:
为控制控件通过addTarget: action: forControlEvents: 方法来添加事件。
通过removeTarget: action: forControlEvents: 来移除事件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值