- iOS开发实战:从入门到上架App Store(第2版) (移动开发丛书)
- 张益珲
- 656字
- 2020-11-28 14:56:44
2.9 滑块控件——UISlider
前几节所介绍的控件都有一个共同的特点,即状态的变化或值的变化都是离散的,如UIButton的正常、高亮、选中,UISwitch的开和关,UISegmentedControl按钮值的切换等。UISlider控件与上述控件最大的区别在于其值的变化可以是连续的,由于这种特性,UISlider控件可以处理一些连续变化量的交互逻辑。
2.9.1 UISlider的创建与常规设置
打开Xcode开发工具,创建一个名为UISliderTest的工程,在ViewController类的viewDidLoad方法中添加如下代码。
Swift语言版本:
override func viewDidLoad() { super.viewDidLoad() let slider = UISlider(frame: CGRect(x: 20, y: 100, width: 280, height: 30)) slider.isContinuous = true slider.minimumValue = 0 slider.maximumValue = 10 slider.minimumTrackTintColor = UIColor.red slider.maximumTrackTintColor = UIColor.green slider.thumbTintColor = UIColor.blue slider.addTarget(self, action: #selector(changeValue), for: .valueChanged) self.view.addSubview(slider) }
Objective-C语言版本:
- (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:) forControlEvents:UIControlEventValueChanged]; [self.view addSubview:slider]; }
continuous属性用于设置UISlider控件的触发方法是否连续触发,如果设置为布尔值真,用户在滑动滑块时,触发方法就会多次执行;如果设置为布尔值假,只有当用户滑动操作结束时,方法才会触发。minimunValue设置UISlider控件的最小值,即滑块在最左端时控件的值。maximumValue设置UISlider控件的最大值,即滑块在最右端时控件的值。minimumTrackTintColor属性设置滑块在左中轴的颜色。maximumTrackColor设置滑块在右中轴的颜色。thumTintColor设置滑块本身的颜色。运行工程,效果如图2-31所示。
图2-31 UISlider控件
使用addTarget:action:forControlEvents进行触发方法的添加,在UISlider类型的参数中可以获取控件的当前值并进行逻辑处理,示例如下。
Swift语言版本:
func changeValue(slider:UISlider) { print(slider.value) }
Objective-C语言版本:
-(void)changeValue:(UISlider *)slider{ NSLog(@"%f", slider.value); }
2.9.2 对UISlider添加图片修饰
UISlider类提供了一些方法对UISlider控件进行图片修饰,使用如下代码。
Swift语言版本:
slider.minimumValueImage = UIImage(named: "image") slider.maximumValueImage = UIImage(named:" image") slider.setThumbImage(UIImage(named: "image"), for: .normal)
Objective-C语言版本:
slider.minimumValueImage = [UIImage imageNamed:@"image"]; slider.maximumValueImage = [UIImage imageNamed:@"image"]; [slider setThumbImage:[UIImage imageNamed:@"image"] forState:UIControlStateNormal];
minimumValueImage属性设置左视图图片,maximumValueImage属性设置右视图图片,setThumbImage:forState方法设置控件在某个状态下的滑块图片。这时运行工程,效果如图2-32所示。
图2-32 添加了图片修饰的UISlider控件