1

使用此代码:

UISlider *slider = [[UISlider alloc]initWithFrame:sliderFrame];
    [slider setThumbImage:[UIImage imageNamed:@"sliderThumb"] forState:UIControlStateNormal];
    UIImage *sliderLeftTrackImage = [[UIImage imageNamed: @"sliderMin"] stretchableImageWithLeftCapWidth: 9 topCapHeight: 0];
    UIImage *sliderRightTrackImage = [[UIImage imageNamed: @"sliderMax"] stretchableImageWithLeftCapWidth: 9 topCapHeight: 0];
    [slider setMinimumTrackImage: sliderLeftTrackImage forState: UIControlStateNormal];
    [slider setMaximumTrackImage: sliderRightTrackImage forState: UIControlStateNormal];

sliderMin 和 sliderMax 图像都是 210x34(与滑块框架大小相同)。sliderMin 为蓝色,sliderMax 为红色。当滑块一直向左时,我正确地看到了红色条。但是,在将拇指向右滑动几个像素后,整个条形图变为蓝色(sliderMin 图像)。显然我应该只看到滑块左侧的蓝色条。我究竟做错了什么?

4

1 回答 1

3

首先,您使用的是已弃用的 API。除非您需要支持 iOS 4.3(为什么?),否则您应该resizableImageWithCapInsets:resizingMode:使用stretchableImageWithLeftCapWidth:topCapHeight:.

UIImage *sliderLeftTrackImage = [[UIImage imageNamed: @"sliderMin"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 9, 0, 9)];
UIImage *sliderRightTrackImage = [[UIImage imageNamed: @"sliderMax"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 9, 0, 9)];

现在,鉴于此,您的图像大小不正确。制作可调整大小的图像时,图像应具有您需要的任何固定端,然后中间 1 个像素将平铺以填充其余部分。所以你的滑块图像应该是 19 像素宽(不是 210)。视网膜版本应为 38 像素宽(每端 18 像素固定,中间 2 像素将被平铺)。

于 2013-05-16T16:57:41.480 回答