Как создать собственный большой палец для слайдера в Swift - PullRequest
0 голосов
/ 09 ноября 2019

Я создал свой собственный слайдер, создав подкласс UIControl, а затем создал собственный большой палец, но проблема возникает, когда я пытаюсь удерживать большой палец, чтобы переместить его, я должен держать большой палец в определенном месте, чтобы иметь возможность менять слайдерЗначение Я поместил два изображения на то, как мой слайдер выглядит в симуляторе и как выглядит в иерархии представления отладки, как вы можете видеть из первого изображения, мой большой палец находится вне досок слайдера, что я и хочу, но я могу только перемещатьчасть, которая отображается в иерархии видов, и это не то, что мне нужно, как я могу сделать сенсорный большой палец за пределами границ ползунка, и я хотел бы отметить, что я установил ширину ползунка равной 20
enter image description here

enter image description here

мой код слоя Thumb

class RangeSliderThumbLayer: CALayer {
    override func draw(in ctx: CGContext) {
            let thumbFrame = bounds.insetBy(dx: 4.0, dy: 4.0)
            let thumbPath = UIBezierPath(roundedRect: thumbFrame, cornerRadius: 0)

            // Fill - with a subtle shadow
            let shadowColor = UIColor.clear.cgColor
            ctx.setFillColor(UIColor.gray.cgColor)
            ctx.addPath(thumbPath.cgPath)
            ctx.fillPath()
            ctx.setStrokeColor(shadowColor)
            ctx.setLineWidth(0.5)
            ctx.addPath(thumbPath.cgPath)
            ctx.strokePath()
    }
}

и в моем классе RangeSlider я устанавливаю слои

 rangeSliderThumbLayer = CGRect(x:thumbCenter, y: -(thumbImage.size.height * 2 ) / 3,
                       width: thumbImage.size.width, height: thumbImage.size.height)
rangeSliderThumbLayer.setNeedsDisplay()
...