iOS UISlider和UIStepper控件

本文详细介绍了iOS中的UISlider和UIStepper两种UI控件,包括它们的主要属性、方法及自定义方式,并提供了代码示例。UISlider主要讨论了滑动范围、值的实时更新、滑块和轨道颜色的设置。UIStepper则涵盖了值的设定、按钮图片、背景图片和分割线的定制。同时,文中还展示了如何监听这两个控件的值变化事件。
摘要由CSDN通过智能技术生成

1. UISlider控件

1.1 主要属性

// 默认值,默认是0.0
@property(nonatomic) float value;
// 最小值,默认是0.0
@property(nonatomic) float minimumValue;
// 最大值,默认是1.0
@property(nonatomic) float maximumValue;

// 滑动时,value是否随时变化,默认是YES
@property(nonatomic,getter=isContinuous) BOOL continuous;

// 滑块最左端显示的图片
@property(nullable, nonatomic,strong) UIImage *minimumValueImage;
// 滑块最右端显示的图片
@property(nullable, nonatomic,strong) UIImage *maximumValueImage;

// 滑块颜色
@property(nullable, nonatomic,strong) UIColor *thumbTintColor;
// 滑块左边(小于部分)线条的颜色
@property(nullable, nonatomic,strong) UIColor *minimumTrackTintColor;
// 滑块右边(大于部分)线条的颜色
@property(nullable, nonatomic,strong) UIColor *maximumTrackTintColor;

示例代码

CGFloat width = [UIScreen mainScreen].bounds.size.width - 100;
UISlider *normalSlider = [[UISlider alloc] initWithFrame:CGRectMake(50, 100, width, 80)];
normalSlider.value = 0.2f;
[self.view addSubview:normalSlider];

UISlider *valueSlider = [[UISlider alloc] initWithFrame:CGRectMake(50, 200, width, 80)];
valueSlider.minimumValue = 1;
valueSlider.maximumValue = 100;
valueSlider.value = 20;
valueSlider.continuous = NO;
valueSlider.minimumValueImage = [UIImage imageNamed:@"icon_jian"];
valueSlider.maximumValueImage = [UIImage imageNamed:@"icon_jia"];
valueSlider.minimumTrackTintColor = [UIColor greenColor];
valueSlider.maximumTrackTintColor = [UIColor redColor];
valueSlider.thumbTintColor = [UIColor magentaColor];
[self.view addSubview:valueSlider];

显示如下
在这里插入图片描述

1.2 主要方法

// 设置滑块的值
- (void)setValue:(float)value animated:(BOOL)animated;

// 设置滑块图片
- (void)setThumbImage:(nullable UIImage *)image forState:(UIControlState)state;
// 设置滑块左边(小于部分)线条的图片
- (void)setMinimumTrackImage:(nullable UIImage *)image forState:(UIControlState)state;
// 设置滑块右边(大于部分)线条的图片
- (void)setMaximumTrackImage:(nullable UIImage *)image forState:(UIControlState)state;

示例代码

UISlider *imageSlider = [[UISlider alloc] initWithFrame:CGRectMake(50, 300, width, 80)];
[imageSlider setThumbImage:[UIImage imageNamed:@"icon_money_b"] forState:UIControlStateNormal];
[imageSlider setThumbImage:[UIImage imageNamed:@"icon_money_r"] forState:UIControlStateHighlighted];
imageSlider.value = 0.2f;
[self.view addSubview:imageSlider];

显示如下
在这里插入图片描述
自定义UISlider

自定义一个类继承自UISlider,然后重写这些方法,返回自定义的滑块的各个区域的大小

// 设置minimumValueImage的rect
- (CGRect)minimumValueImageRectForBounds:(CGRect)bounds;
// 设置maximumValueImage的rect
- (CGRect)maximumValueImageRectForBounds:(CGRect)bounds;

// 设置track(滑条)尺寸
- (CGRect)trackRectForBounds:(CGRect)bounds;
// 设置thumb(滑块)尺寸
- (CGRect)thumbRectForBounds:(CGRect)bounds trackRect:(CGRect)rect value:(float)value;

1.3 监听点击事件

[UISlider addTarget:self action:@selector(onSliderValueChanged:)
        forControlEvents:UIControlEventValueChanged];

onSliderValueChanged:方法监听

- (void)onSliderValueChanged:(UISlider *)sender {
    NSLog(@"Slider value = %f", sender.value);
}

2. UIStepper控件

2.1 主要属性

// 默认值,默认是0
@property(nonatomic) double value;
// 最小值,默认是0
@property(nonatomic) double minimumValue;
// 最大值,默认是100
@property(nonatomic) double maximumValue;
// 每步的默认值,默认是1,必须为正数
@property(nonatomic) double stepValue;

// 长按是否连续触发变化,默认是YES,如果设置为NO,只有在按击结束后,才会触发
@property(nonatomic,getter=isContinuous) BOOL continuous;
// 长按是否会一直改变值,默认是YES
@property(nonatomic) BOOL autorepeat;
// 值是否循环,默认是NO
@property(nonatomic) BOOL wraps; 

显示如下
在这里插入图片描述

2.2 主要方法

// 设置背景图片
- (void)setBackgroundImage:(nullable UIImage*)image forState:(UIControlState)state;

// 设置分割线
- (void)setDividerImage:(nullable UIImage*)image forLeftSegmentState:(UIControlState)leftState rightSegmentState:(UIControlState)rightState;

// 设置加号按钮的图片
- (void)setIncrementImage:(nullable UIImage *)image forState:(UIControlState)state;
// 设置减号按钮的图片
- (void)setDecrementImage:(nullable UIImage *)image forState:(UIControlState)state;

示例代码

UIStepper *imageStepper = [[UIStepper alloc] initWithFrame:CGRectMake(50, 200, 200, 50)];
[imageStepper setBackgroundImage:[[UIColor whiteColor] colorToImage] forState:UIControlStateNormal];

[imageStepper setDividerImage:[[UIColor blueColor] colorToImage]
    forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal];
[imageStepper setDividerImage:[[UIColor blueColor] colorToImage] 
    forLeftSegmentState:UIControlStateHighlighted rightSegmentState:UIControlStateNormal];
[imageStepper setDividerImage:[[UIColor blueColor] colorToImage] 
    forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateHighlighted];

imageStepper.layer.borderColor = [UIColor blueColor].CGColor;
imageStepper.layer.borderWidth = 1;
imageStepper.layer.cornerRadius = 8;

[imageStepper setTintColor:[UIColor redColor]];
[imageStepper setIncrementImage:[UIImage imageNamed:@"user_xiaoxi"] forState:UIControlStateNormal];
[imageStepper setDecrementImage:[UIImage imageNamed:@"user_kefu"] forState:UIControlStateNormal];

显示如下
在这里插入图片描述

2.3 监听点击事件

[UIStepper addTarget:self action:@selector(onStepperValueChanged:) 
    forControlEvents:UIControlEventValueChanged];

onStepperValueChanged:方法监听

- (void)onStepperValueChanged:(UIStepper *)sender {
    NSLog(@"UIStepper.value = %f", sender.value);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值