如何自定义UISlider?

时间:2009-09-22 09:23:49

标签: iphone uislider

我了解如何获得最小曲目和最大曲目图像,以及它如何可伸缩。但是,根据我的需要,这可能不够控制。

我的情况是在左侧(最小轨道)我需要根据数据显示两种不同的颜色。左侧实际上代表两个数据,但是在最小值和最大值之间仍然只存在一个拇指。

所以我怎么能这样做?

任何示例代码??

我其实想要这样

photo link

在左侧,它是咧嘴笑的颜色,但当它超过拇指图像时,它变成红色..

3 个答案:

答案 0 :(得分:8)

在你的.h文件中

IBOutlet UISlider *slide;
你的.m文件中的

UIImage *minImage = [UIImage imageNamed:@"unselected.png"];
    UIImage *maxImage = [UIImage imageNamed:@"selected.png"];
    UIImage *tumbImage= [UIImage imageNamed:@"thumb.png"];
    minImage=[minImage stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0];
    maxImage=[maxImage stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0];
    [slide setMinimumTrackImage:minImage forState:UIControlStateNormal];

unselected.png和selected.png是充当bar和thumb.png的图片,它们在栏上滑动。

答案 1 :(得分:3)

将图像交换代码放入滑块值读取方法中,通常为:

-(IBAction)sliderChanged:(id)sender; {}

只要滑块值达到某个预定义值,就会使用自定义红色图像切换自定义绿色图像。见下面的例子。

// Switches the -thumbImage between an ivar named highImage and lowImage 
// when the slider passes the halfway point  

if (sliderValue > 0.5) {
    [self updateSliderThumbWithImage:self.highImage];
} else {
    [self updateSliderThumbWithImage:self.lowImage];
}

定义滑块图像更新方法,如下所示:

-(void)updateSliderThumbWithImage:(UIImage *)image;
{
    [self.slider setThumbImage:image forState:UIControlStateNormal];
    [self.slider setThumbImage:image forState:UIControlStateHighlighted];
}

// You have to set thumb images for both states  
// or your image will vanish when user slides it. 
// Not sure if you have to do the same with the track image, though.  

希望这有助于某人。

答案 2 :(得分:0)

我不确定我是否可以想象你需要什么(你有可能发布草图吗?),但是搜索UISlider你可以找到一些很有创意的用途。否则,您可以创建自己的自定义UIControl。


(来源:texlege.com