使用以下代码:
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图像)。显然,我只能看到滑块左侧的蓝色条。我做错了什么?
发布于 2013-05-17 00:57:41
首先,您使用的是过时的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个像素将被平铺)。
https://stackoverflow.com/questions/16593101
复制相似问题