我正在设计一个滑块并面临一个问题,滑块的拇指没有移动到它的结束边缘。
我试图将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)
}
}
答案 0 :(得分:0)
您应该将UISlider和implementthumbRect(forBounds:trackRect:value:)以及thumbImage(for:)子类化以绘制三角形,并trackRect(forBounds:)绘制轨道。 我发现最好调用super来获取默认边界,然后将它们插入一些量(使用负插值使其更大)。在您的情况下,您还需要偏移拇指的y位置,因为它默认从轨道中间开始。