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控件