当滑块具有极端最大值时,UISlider MaximumTrackImage 剪辑

UISlider MaximumTrackImage clips when slider has extreme max values

我使用 Xcode 的故事板将 UISlider 拖到我的视图中。然后我制作了一个插座并定制了滑块的外观(在Swift中)如下:

slider.setMinimumTrackImage(UIImage(named: "Images/slider_min.png")?.stretchableImageWithLeftCapWidth(3, topCapHeight: 0), forState: UIControlState.Normal)
slider.setMaximumTrackImage(UIImage(named: "Images/slider_max.png")?.stretchableImageWithLeftCapWidth(3, topCapHeight: 0), forState: UIControlState.Normal)
slider.setThumbImage(UIImage(named: "Images/slider_thumb.png"), forState: UIControlState.Normal)
slider.setThumbImage(UIImage(named: "Images/slider_thumb.png"), forState: UIControlState.Highlighted)

滑块是步进的,因此可能的值是整数∈[1,12]。

这些是参考图像,它们是透明的 PNG:

我在处理两个最大可能值 (11, 12) 时遇到问题:出于某种原因,MaximumTrackImage 剪辑。事情是这样的:

  1. 初始,最小位置,值= 1
  2. 最后一个 OK 位置,值 = 10
  3. 裁剪发生的第一个位置,值= 11
  4. 最大位置,仍然剪裁,值= 12

为什么会这样?可以解决这个问题还是有任何解决方法?

哦,好吧,问题似乎出在 MaximumTrackImage 上——它太宽了。我将轨道图像的宽度裁剪为 6 px,问题消失了。

裁剪 MaximumTrackImage 就足够了,但裁剪 MinimumTrackImage 也没什么坏处。