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

2.12 步进控制器——UIStepper

步进控制器,从名字就可以了解,其功能是进行离散式的数据调节。

2.12.1 步进控制器的基本属性使用

使用Xcode创建一个名为UIStepperTest的工程,在ViewController.m文件的viewDodLoad方法中添加如下代码:

        - (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:UIC
    ontrolEventValueChanged];
        }

UIKit框架中所有的视图控件都有center这个属性,center属性用于设置控件的中心位置坐标,上面代码将步进控制器位置设置在坐标为(100,100)的位置。continuous属性设置触发方法是否连续执行,当用户按住步进控制器上的某个按钮不松开时,如果continuous属性设置为YES,则添加的触发方法会一直连续执行,步进控制器的值每变化一次方法都会执行一次。autorepeat属性从字面理解为自动重复,当autorepeat属性设置为YES时,用户如果按住步进控制器中的按钮不放,则步进控制器的值会一直连续改变,如果autorepeat设置为NO,则直到用户手指抬起完成单击动作,步进控制器的值才会改变,触发方法才会执行。warps属性设置步进控制器的值是否循环,如果设置为YES,当值增加到最大时,如果用户继续单击增加按钮,则值会从最小值重新开始增加,反之亦然,如果这个属性设置为NO,则当步进控制器到达极值的时候,相应的按钮将被禁用。minimumValue 属性设置步进控制器的最小值, maximumValue属性设置步进控制器的最大值。stepValue属性用于设置步进控制器的步长及每次按下按钮后步进控制器的值改变的大小。tintColor属性设置控件的颜色。步进控制器也是通过addTarget:action:forControlEvents:方法来添加触发事件,在触发方法中会传入UIStepper 对象本身,开发者通过获取其值来做相应的逻辑处理,上面代码中的click:方法实现如下,这里打印了UIStepper控件的值。

        -(void)click:(UIStepper *)step{
            NSLog(@"%f", step.value);
        }

运行上面的程序代码,会看到如图2-36所示的效果。

2.12.2 自定义UIStepper按钮图片

在图2-37中可以看到,系统的UIStepper控件默认是显示一个减号和一个加号,单击加号值增加,单击减号值减小,开发者也可以通过以下方法自定义两个按钮的图片。

图2-37 UIStepper控件

          [stepper setDecrementImage:[[UIImage imageNamed:@"image"] imageWithRe
  nderingMode:UIImageRenderingModeAlwaysOriginal] forState:UIControlStateNorma
  l];
      [stepper setIncrementImage:[[UIImage imageNamed:@"image"] imageWithRender
  ingMode:UIImageRenderingModeAlwaysOriginal] forState:UIControlStateNormal];

setDecrementImage:imageWithRenderingMode:forState:方法设置减按钮的图片, setIncrementImage:imageWithRenderingMode:forState:方法设置加按钮的图片。效果如图2-38所示。

图2-38 自定义图片的UIStepper