UISlider没有移动到它的边缘

时间:2017-04-28 03:33:43

标签: ios uislider

我正在设计一个滑块并面临一个问题,滑块的拇指没有移动到它的结束边缘。

See Screenshot

我试图将UISlider子类化但是没有用。所以请帮我解决这个问题。

谢谢。

以下是我的代码:

class CenteredThumbSlider: UISlider {

  override func thumbRect(forBounds bounds: CGRect, trackRect rect: CGRect, value: Float) -> CGRect
  {
    let unadjustedThumbrect = super.thumbRect(forBounds: bounds, trackRect: rect, value: value)
    let thumbOffsetToApplyOnEachSide:CGFloat = unadjustedThumbrect.size.width / 2.0
    let minOffsetToAdd = -thumbOffsetToApplyOnEachSide
    let maxOffsetToAdd = thumbOffsetToApplyOnEachSide
    let offsetForValue = minOffsetToAdd + (maxOffsetToAdd - minOffsetToAdd) * CGFloat(value / (self.maximumValue - self.minimumValue))
    var origin = unadjustedThumbrect.origin
    origin.x += offsetForValue
    return CGRect(origin: origin, size: unadjustedThumbrect.size)
  }

}

1 个答案:

答案 0 :(得分:0)

您应该将UISlider和implementthumbRect(forBounds:trackRect:value:)以及thumbImage(for:)子类化以绘制三角形,并trackRect(forBounds:)绘制轨道。 我发现最好调用super来获取默认边界,然后将它们插入一些量(使用负插值使其更大)。在您的情况下,您还需要偏移拇指的y位置,因为它默认从轨道中间开始。