iOS开发实战:从零基础到App Store上架
上QQ阅读APP看书,第一时间看更新

2.9 滑块控件——UISlider

在前几节所介绍的控件中,它们都有一个共同的特点,其状态的变化或者其值的变化都是离散的几种,例如UIButton 的正常、高亮、选中,UISwitch 的开和关,UISegmentedControl的按钮值的切换等。UISlider与上述控件最大的区别在于它值的变化可以是连续的,由于这种特性,UISlider可以用于处理一些连续变化量的交互逻辑。

2.9.1 UISlider的创建与常规设置

打开Xcode,创建一个名为UISliderTest的工程,在ViewController.m文件的viewDidLoad方法中添加如下代码。

        - (void)viewDidLoad {
            [super viewDidLoad];
            UISlider * slider = [[UISlider alloc]initWithFrame:CGRectMake(20, 100,
    280, 30)];
            slider.continuous = YES;
            slider.minimumValue = 0;
            slider.maximumValue=10;
            slider.minimumTrackTintColor = [UIColor redColor];
            slider.maximumTrackTintColor = [UIColor greenColor];
            slider.thumbTintColor = [UIColor blueColor];
            [slider addTarget:self action:@selector(changeValue:) forControlEvent
    s:UIControlEventValueChanged];
            [self.view addSubview:slider];
        }

continuous属性用于设置UISlider控件的触发方法是否连续触发,设置为YES,则用户在滑动滑块时,触发方法会多次执行,如果设置为NO,则只有当用户滑动结束时,方法才会触发。minimunValue设置UISlider控件的最小值,即滑块在最左端时控件的值。maximumValue设置UISlider 控件的最大值,即滑块在最右端时控件的值。minimumTrackTintColor属性设置滑块以左中轴的颜色。maximumTrackColor 设置滑块以右中轴的颜色。thumTintColor 设置滑块本身的颜色。运行工程,效果如图2-31所示。

图2-31 UISlider控件

使用addTarget:action:forControlEvents:进行触发方法的添加,在UISlider类型的参数中可以获取到控件的当前值并进行逻辑处理,示例如下所示。

        -(void)changeValue:(UISlider *)slider{
            NSLog(@"%f", slider.value);
        }

2.9.2 对UISlider添加图片修饰

UISlider类提供了一些方法来对UISlider控件进行一些图片的修饰,使用如下代码。

        slider.minimumValueImage = [UIImage imageNamed:@"image"];
        slider.maximumValueImage = [UIImage imageNamed:@"image"];
        [slider setThumbImage:[UIImage imageNamed:@"image"] forState:UIControlSta
    teNormal];

minimumValueImage 属性设置左视图图片,maximumValueImage 属性设置右视图图片, setThumbImage:forState:方法设置控件在某个状态下的滑块图片,这时运行工程,效果如图2-32所示。

图2-32 添加了图片修饰的UISlider控件