自定义滑块,上面带字体同时滑动功能

自定义一个滑块类,继承UISlider,滑块上面需要带一个同时滑动的进度显示字体。

1、重写Slider的bouds方法

-(CGRect)trackRectForBounds:(CGRect)bounds {

bounds.origin.x=0;

bounds.origin.y=bounds.size.height*2/3;

bounds.size.height=3;

bounds.size.width=bounds.size.width;

returnbounds;

}

2、显示滑块进度Label放在setValue:animated方法里面

/**

重新UISlider方法 设置值时,将值显示在滑块中

@param value 值

@param animated 是否动画

*/

- (void)setValue:(float)value animated:(BOOL)animated

{

[supersetValue:valueanimated:animated];

// 不起用动画的时候提示,这样好点

//if (value > 0) {

// 计算提示视图与Slider位置

floatnumerator = value -self.minimumValue;

floatdenominator =self.maximumValue-self.minimumValue;

if(denominator) {

CGFloatx = numerator / denominator;

CGFloatoffSetX = x * (self.bounds.size.width-15*2) -56/2+10;

CGRectrect =self.defaultLabel.frame;

if(offSetX !=0) {

rect.origin.x= offSetX;

}

self.moveTipView.frame= rect;

}

//}

self.defaultLabel.text= [NSStringstringWithFormat:@"%d",(int)value];

}

3、label控制和背景视图

- (UILabel*)defaultLabel {

if(_defaultLabel==nil) {

_defaultLabel= [[UILabelalloc]initWithFrame:CGRectMake(0,0,70,30)];

_defaultLabel.text=@"数量";

_defaultLabel.font= [UIFontboldSystemFontOfSize:16];

_defaultLabel.textColor= [UIColorredColor];

_defaultLabel.textAlignment=NSTextAlignmentCenter;

}

return_defaultLabel;

}

- (UIView*)moveTipView {

if(_moveTipView==nil) {

_moveTipView= [[UIViewalloc]initWithFrame:CGRectMake(0,0,70,30)];

}

return_moveTipView;

}

自定义滑块,上面带字体同时滑动功能_第1张图片

你可能感兴趣的:(自定义滑块,上面带字体同时滑动功能)