Пользовательский палец UISlider не скользит по краям дорожки - PullRequest
0 голосов
/ 24 января 2019

У меня есть пользовательский uislider, который прекрасно работает, но когда большой палец достигает любого края дорожки, требуется небольшое касание в нужной точке, чтобы большой палец реагировал и снова скользил.Для пользователей это приводит к тому, что большой палец кажется застрявшим по краям.

Я пытался расширить thumbRect, манипулируя вставкой CGRect до отрицательного значения, но все, что он делал, это увеличивал изображение большого пальца ине обязательно исправлять реакцию большого пальца на скольжение.

func setupThumb() {       
    do {           
        self.setThumbImage(sliderThumbImage, for: .normal)
        self.setThumbImage(sliderThumbImage, for: .highlighted)
    } catch {
        //
    }
}


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)
}
...