- iOS开发实战:从入门到上架App Store(第2版) (移动开发丛书)
- 张益珲
- 909字
- 2020-11-28 14:56:45
2.12 步进控制器——UIStepper
步进控制器从名字上大致就可以了解其功能,是进行离散式数据调节的常用视图控件。
2.12.1 步进控制器的基本属性使用
使用Xcode开发工具创建一个名为UIStepperTest的工程,在ViewController类的viewDodLoad方法中添加如下代码。
Swift语言版本:
override func viewDidLoad() { super.viewDidLoad() let stepper = UIStepper() stepper.center = CGPoint(x: 100, y: 100) stepper.isContinuous = true stepper.autorepeat = true stepper.wraps = true stepper.minimumValue = 1 stepper.maximumValue = 10 stepper.stepValue = 1 stepper.tintColor = UIColor.red self.view.addSubview(stepper) stepper.addTarget(self, action: #selector(click), for: .valueChanged) }
Objective-C语言版本:
- (void)viewDidLoad { [super viewDidLoad]; UIStepper * stepper = [[UIStepper alloc]init]; stepper.center = CGPointMake(100, 100); stepper.continuous = YES; stepper.autorepeat = YES; stepper.wraps = YES; stepper.minimumValue = 1; stepper.maximumValue =10; stepper.stepValue = 1; stepper.tintColor = [UIColor redColor]; [self.view addSubview:stepper]; [stepper addTarget:self action:@selector(click:) forControlEvents:UIControlEventValueChanged]; }
UIKit框架中所有的视图控件都有center这个属性,center属性用于设置控件的中心位置坐标,上面的代码将步进控制器设置在坐标为(100,100)的位置。continuous属性设置触发方法是否连续执行,当用户按住步进控制器上的某个按钮不松开时,如果continuous属性设置为布尔值真,添加的触发方法就会一直连续执行,步进控制器的值每变化一次方法就会执行一次。autorepeat属性从字面理解为自动重复,当autorepeat属性设置为布尔值真时,用户如果按住步进控制器中的按钮不放,步进控制器的值就会一直连续改变,如果autorepeat设置为布尔值假,直到用户手指抬起完成单击动作,步进控制器的值才会改变,触发方法才会执行。warps属性设置步进控制器的值是否循环,如果设置为布尔值真,当值增加到最大时,用户继续单击增加按钮,值就会从最小值重新开始增加,反之亦然,如果这个属性设置为布尔值假,当步进控制器到达极值的时候,相应的按钮就会被禁用。minimumValue属性设置步进控制器的最小值,maximumValue属性设置步进控制器的最大值。stepValue属性用于设置步进控制器的步长,即每次按下按钮后步进控制器的值改变的大小。tintColor属性设置控件的颜色。步进控制器也是通过addTarget方法添加触发事件的,在触发方法中将会传入UIStepper对象本身,开发者通过获取其值来做相应的逻辑处理,上面代码中的click:方法实现如下,这里打印了UIStepper控件的值。
Swift语言版本:
func click(stepper:UIStepper) { print(stepper.value) }
Objective-C语言版本:
-(void)click:(UIStepper *)step{ NSLog(@"%f", step.value); }
运行上面的程序代码,会看到如图2-37所示的效果。
图2-37 UIStepper控件
2.12.2 自定义UIStepper按钮图片
在图2-37中可以看到,系统的UIStepper控件默认显示一个减号和一个加号,单击加号值增加,单击减号值减小,开发者也可以通过以下方法自定义两个按钮的图片。
Swift语言版本:
stepper.setDecrementImage(UIImage(named: "image")? .withRenderingMode(.alwaysOriginal), for: .normal) stepper.setIncrementImage(UIImage(named: "image")? .withRenderingMode(.alwaysOriginal), for: .normal)
Objective-C语言版本:
[stepper setDecrementImage:[[UIImage imageNamed:@"image"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] forState:UIControlStateNormal]; [stepper setIncrementImage:[[UIImage imageNamed:@"image"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] forState:UIControlStateNormal];
setDecrementImage:imageWithRenderingMode:forState方法设置减按钮的图片,setIncrementImage:imageWithRenderingMode: forState方法设置加按钮的图片,效果如图2-38所示。
图2-38 自定义图片的UIStepper