在 TrackImage 上带有图像的 UISlider

Mar*_*rry 2 objective-c uislider

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

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];
Run Code Online (Sandbox Code Playgroud)

无论是否带有stretchableImageWithLeftCapWidth 都不正确。当我旋转手机时,轨道上的图像缩放不正确,因此图像中的信息发生了偏移。类似于这篇文章中的图片:如何在 UISlider 上放置图片?. 当我移动滑块时,图像开始移动并且颜色在最小和最大轨道中没有重叠,从而导致丑陋的效果。

小智 5

避免拉伸图像变化

UIImage * sliderBarImage1 = [UIImage imageNamed:@"slider_b"];
UIImage * sliderBarImage2 = [UIImage imageNamed:@"slider_w"];
Run Code Online (Sandbox Code Playgroud)

进入

UIImage * sliderBarImage1 = [[UIImage imageNamed:@"slider_b"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
UIImage * sliderBarImage2 = [[UIImage imageNamed:@"slider_w"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
Run Code Online (Sandbox Code Playgroud)