自定义 UISlider 高度 - 以编程方式创建

Customize UISlider Height - Programmatically Created

当以编程方式创建滑块时,如何为滑块创建自定义高度?

这个类似 question 的答案解释了在使用故事板设置幻灯片时如何做到这一点。如果您不使用 Storyboard 并且滑块是以编程方式沿着这些线路设置的怎么办?谢谢!

let slider: UISlider = {
    let slider = UISlider()
    slider.minimumValue = 1
    slider.maximumValue = 7
    slider.value = 1
    slider.maximumTrackTintColor = UIColor.red
    slider.minimumTrackTintColor = UIColor.green
    slider.thumbTintColor = UIColor.blue
    slider.isContinuous = true
    slider.translatesAutoresizingMaskIntoConstraints = false
    return slider
}()

您需要创建一个自定义滑块,并覆盖 trackRect(forBounds bounds: CGRect) -> CGRect

class CustomSlider: UISlider {
   let trackHeight: CGFloat = 12 //desired track width, in points
   override func trackRect(forBounds bounds: CGRect) -> CGRect {
      let track = super.trackRect(forBounds: bounds)
      return CGRect(x: track.origin.x, y: track.origin.y, width: track.width, height: trackHeight)
   }
}

并更改您的实现以使用此

let slider: CustomSlider = {
       let slider = CustomSlider()
       slider.minimumValue = 1
       slider.maximumValue = 7
       slider.value = 1
       slider.maximumTrackTintColor = UIColor.red
       slider.minimumTrackTintColor = UIColor.green
       slider.thumbTintColor = UIColor.blue
       slider.isContinuous = true
       slider.translatesAutoresizingMaskIntoConstraints = false
       return slider
   }()