滑块【UISlider】笔记

转自:http://www.jb51.net/article/86248.htm 感谢作者提供,本宝宝用作笔记

创建:
UISlider* mySlider = [ [ UISlider alloc ] initWithFrame:CGRectMake(20.0,10.0,200.0,0.0) ];//高度设为0就好

设置滑动范围:
ps:默认的 0.0 到 1.0 之间的值
mySlider.mininumValue = 0.0;//下限
mySlider.maxinumValue = 50.0;//上限

设置默认值:
mySlider.value = 22.0;

两端添加图片:

// slider.minimumTrackTintColor = [UIColor greenColor]; //滑轮左边颜色,如果设置了左边的图片就不会显示
// slider.maximumTrackTintColor = [UIColor redColor]; //滑轮右边颜色,如果设置了右边的图片就不会显示
// slider.thumbTintColor = [UIColor redColor];//设置了滑轮的颜色,如果设置了滑轮的样式图片就不会显示

ps:滑块可以在任何一段显示图像。添加图像后会导致滑动条缩短,所以记得要记得在创建的时候增加滑块的宽度来适应图像。
[ mySlider setMininumTrackImage: [ UIImage applicationImageNamed:@"min.png" ] forState: UIControlStateNormal ];
[ mySlider setMaxinumTrackImage: [ UIImage applicationImageNamed:@"max.png" ] forState: UIControlStateNormal ];
ps:你可以根据滑块的各种不同状态显示不同的图像。下面是可用状态:
UIControlStateNormal
UIControlStateHighlighted
UIControlStateDisabled
UIControlStateDisabled
UIControlStateSelected

读取值:
float value = mySlider.value;

通知:(添加方法)
[ mySlider addTarget:self action:@selector(sliderValueChanged:) forControlEventValueChanged ];

ps: 只要滑块停放(注意是停放,如果要在拖动中也触发,请看后文)到新的位置,你的动作方法就会被调用
代码如下:

  • (void) sliderValueChanged:(id)sender{
    UISlider* control = (UISlider)sender;
    if(control == mySlider){
    float value = control.value;
    /
    添加自己的处理代码 */
    }
    }

ps:如果要在拖动中也触发,需要设置滑块的 continuos 属性:
mySlider.continuous = YES ;

UISlider两边有空隙的解决方法:(比如音乐播放器进度条两遍空白)

  • (CGRect)thumbRectForBounds:(CGRect)bounds trackRect:(CGRect)rect value:(float)value{
    rect.origin.x = rect.origin.x - 10 ;
    rect.size.width = rect.size.width +20;
    return CGRectInset ([super thumbRectForBounds:bounds trackRect:rect value:value], 10 , 10);
    }

ps:当然UISlider还有这么几个方法可以重写:
-(CGRect)trackRectForBounds:(CGRect)bounds{
bounds.origin.x=15;
bounds.origin.y=bounds.size.height/3;
bounds.size.height=bounds.size.height/5;
bounds.size.width=bounds.size.width-30;
return bounds;
}

  • (CGRect)minimumValueImageRectForBounds:(CGRect)bounds;
  • (CGRect)maximumValueImageRectForBounds:(CGRect)bounds;

你可能感兴趣的:(滑块【UISlider】笔记)