2012-09-15 22 views
1

我有UISLider setMinimumTrackImage和setMaximumTrackImage。两张图片的分辨率都相同。如果我移动滑块...图像显示不正确。当我滑动滑块控制拇指时,他们正在移动。 我试图用UISlider与TrackImage上的图像

UIImage * sliderBarImage1 = [UIImage imageNamed:@"slider_b"]; 
UIImage * sliderBarImage2 = [UIImage imageNamed:@"slider_w"]; 

sliderBarImage1 = [sliderBarImage1 stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0]; 
sliderBarImage2 = [sliderBarImage2 stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0]; 

[self.slider setMinimumTrackImage:sliderBarImage1 forState:UIControlStateNormal]; 
[self.slider setMaximumTrackImage:sliderBarImage2 forState:UIControlStateNormal]; 

带或不带stretchableImageWithLeftCapWidth其不正确的。而当我旋转手机时,轨道上的图像会不规则地缩放,因此图像中的信息会发生移位。 与此文章中的图像相似:How to place image on UISlider?。当我移动滑块时,图像开始移动,颜色在最小和最大轨迹中不重叠,导致难看的效果。

+0

这是一个众所周知的问题。我通过将另一个轨道图像放在单独的UIImageView上并将其放置在IB中的UISlider下解决了这个问题。 – Gerstmann

+0

它帮助...但setMinimumTrackImage是stil没有正确重叠..其伸展其大小:( –

回答

4

避免拉伸图像变化

UIImage * sliderBarImage1 = [UIImage imageNamed:@"slider_b"]; 
UIImage * sliderBarImage2 = [UIImage imageNamed:@"slider_w"]; 

UIImage * sliderBarImage1 = [[UIImage imageNamed:@"slider_b"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; 
UIImage * sliderBarImage2 = [[UIImage imageNamed:@"slider_w"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; 
+0

请注意,它只适用于iOS 5.0或更高版本如果你支持iOS 4.x,你必须使用' - (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight' – bompf