UISlider与TrackImage上的图像

时间:2012-09-15 13:26:21

标签: objective-c uislider

我有UISLider,设置了setMinimumTrackImage和setMaximumTrackImage。两个图像具有相同的分辨率如果我移动滑块...图像显示不正确。当我拖动滑块控制拇指时,它们正在移动。 我试着用

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?。当我移动滑块时,图像开始移动,颜色在最小和最大轨道上不重叠,导致难看的效果。

1 个答案:

答案 0 :(得分: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)];