UIControl的两个子类 -- UISegmentedControl UISlider

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值