自定义一个滑块类,继承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;
}