首页 > 解决方案 > UISlider:改变了高度,但最大值闪烁

问题描述

我自定义了 aUISlider并且一切正常,除非我将滑块拖动到 100%。然后用正方形替换圆形帽。

这是我自定义滑块的方法:

@IBInspectable var trackHeight: CGFloat = 14

override func trackRect(forBounds bounds: CGRect) -> CGRect {
    return CGRect(origin: bounds.origin, size: CGSize(width: bounds.width, height: trackHeight))
}

98% 图片:

在此处输入图像描述

100% 图像:

在此处输入图像描述

标签: iosswiftuiviewuislider

解决方案


minimumTrackTintColor您可以通过 set和maximumTrackTintColorinto删除轨道背景UIColor.clear并自己绘制轨道背景。

例如:

class CustomSlider: UISlider {

    override func trackRect(forBounds bounds: CGRect) -> CGRect {
        return bounds
    }

    override func draw(_ rect: CGRect) {
        guard let context = UIGraphicsGetCurrentContext() else {
            return
        }

        context.setFillColor(UIColor.green.cgColor)
        let path = UIBezierPath(roundedRect: rect, cornerRadius: rect.size.height / 2).cgPath
        context.addPath(path)
        context.fillPath()
    }

}

推荐阅读