iOS基础2:UIStepper的使用 (计数器)
2024-08-04 15:11:17 218人阅读
这是iOS5后才出现的控件,镔哥做项目用过,所以列出来,UIStepper是一个类似UISwitch的控件,但是左右两边是一个加号和一个减号。 如图所示,该控件外观上和UISwitch类似,由两个button组成。一个按钮是“+”,一个按钮是“-”,共同控制同一个value的增减。
在iOS5中新增了一个数字输入控件UIStepper,它可以递进式输入数量。UIStepper继承自UIControl,它主要的事件是UIControlEventValueChanged,每当它的值改变了就会触发这个事件
它主要有下面几个属性
- value 当前所表示的值,默认0.0
- minimumValue 最小可以表示的值,默认0.0
- maximumValue 最大可以表示的值,默认100.0
- stepValue 每次递增或递减的值,默认1.0
文档中的一些属性和方法:
配置 Stepper
continuous
属性 BOOL类型,默认YES,YES时表示当用户交互时会立刻发送ValueChange事件,NO则是只有等用户交互结束时才发送ValueChange事件 autorepeat
属性 BOOL类型,默认YES,YES时表示按住加号或减号不松手,数字会持续变化 wraps
属性 BOOL类型,默认NO,YES时当value加的超过maximumValue,value将变成minimumValue的值,当减的比minimumValue还小,则value变成maximum的值。如果设成NO,这value不会超过最大和最小值 minimumValue
属性 Double型 默认为0,最小值,当设置值大于或等于maximumValue时会报一个NSInvalidArgumentException异常 maximumValue
属性 Double型 默认为100,是Stepper的最大值,当设置小于或等于minimumValue时会报一个NSInvalidArgumentException异常
stepValue
属性 Double型 默认为1,Stepper的增量或者步数(例如stepValue 是10,则点一下加就加10,减也是减10),必须大于0,否则会报一个NSInvalidArgumentException异常
- 访问 Stepper的值
value
属性 Double型 默认是0,上限是maximumValue 下限是minimumValue,当数值改变时,会发送UIControlValueEventChanged给目标- 定制化外观
tintColor
属性 UIColor型,默认是nil,iOS 6新增
- - (UIImage *)backgroundImageForState:(UIControlState)state
- 什么状态时用什么背景图片,iOS 6新增
UIControlState 有六个枚举变量
- - (void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state
- 最好图片是可伸缩的 iOS 6新增
- - (UIImage *)decrementImageForState:(UIControlState)state
- iOS 6新增
- - (void)setDecrementImage:(UIImage *)image forState:(UIControlState)state
- iOS 6新增
- 减号按钮的图片
- - (UIImage *)incrementImageForState:(UIControlState)state
- iOS 6新增
- - (void)setIncrementImage:(UIImage *)image forState:(UIControlState)state
- iOS 6新增
- 加号按钮的图片
- - (UIImage *)dividerImageForLeftSegmentState:(UIControlState)leftState rightSegmentState:(UIControlState)rightState
- leftState是左边的那个按钮的状态,rightState是右边那个按钮的状态
- 两个按钮不同状态时换控件图片,iOS 6新增
- - (void)setDividerImage:(UIImage *)image forLeftSegmentState:(UIControlState)leftState rightSegmentState:(UIControlState)rightState
- iOS 6新增
例子:
testStepper.stepValue = http://www.mamicode.com/10;
testStepper.minimumValue = http://www.mamicode.com/0;
testStepper.maximumValue = http://www.mamicode.com/55;
testStepper.value = http://www.mamicode.com/10;
testStepper.tintColor = [UIColor redColor];
testStepper.wraps = YES;
一开始就一直点加,则值的变化为 20 30 40 50 55
一开始就一直点减,则值的变化为 0
当到达上限或下限时,且wraps没有设置成YES,则相应的加或减的按钮会disable
该控件一个有趣的特征是当用户按住“+”“-”按钮时,根据按住的时间长度,控件值的数字也以不同的数字改变。按住的时间越长,数值改变的越快。可以为UIStepper设定一个数值范围,比如0-99。
下面是UIStepper应用范例代码:
01 | // Create a label to show the value in the stepper |
02 | label = [[UILabel alloc] initWithFrame:CGRectMake(10, 20, 100, 30)]; |
03 | [label setTextColor:[UIColor whiteColor]]; |
04 | [label setBackgroundColor:[UIColor clearColor]]; |
05 | [label setTextAlignment:UITextAlignmentLeft]; |
06 | [label setText: @ "Quantity:" ]; |
07 | [[self view] addSubview:label]; |
09 | // Frame defines location, size values are ignored |
10 | UIStepper *stepper = [[UIStepper alloc] initWithFrame:CGRectMake(120, 20, 0, 0)]; |
12 | // Set action target and action for a particular value changed event |
13 | [stepper addTarget:self action:@selector(stepperPressed:) forControlEvents:UIControlEventValueChanged]; |
16 | [stepper setMinimumValue:0]; |
17 | [stepper setMaximumValue:99]; |
19 | // Value wraps around from minimum to maximum |
20 | [stepper setWraps:YES]; |
22 | // If continuos (default), changes are sent for each change in stepper, |
23 | // otherwise, change event occurs once user lets up on button |
24 | [stepper setContinuous:NO]; |
26 | // To change the increment value for each step |
28 | [stepper setStepValue:10]; |
iOS基础2:UIStepper的使用 (计数器)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉:
投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。