У меня есть пользовательский 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)
}