自定义 UISlider 内部条角半径问题 iOS 14

Custom UISlider inner bar corner radius issue iOS 14

在我的自定义 UISlider 中,我想实现一个圆角内栏。我没有使用拇指。它在 iOS 13 中工作正常,但在 14 中它崩溃并出现错误:

*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSSingleObjectArrayI objectAtIndex:]: index 1 beyond bounds [0 .. 0]'

自定义 UISlider 代码

class CustomSlider: UISlider {
    
@IBInspectable var trackHeight: CGFloat = 30
    
    override func layoutSubviews() {
        super.layoutSubviews()
        self.layer.sublayers![1].cornerRadius = 12
        self.thumbTintColor = .clear
    }
}

self.layer.sublayers![1].cornerRadius = 12,这一行造成了问题。如果我评论这行代码工作正常。

您可以使用 if let...

override func layoutSubviews() {
    super.layoutSubviews()
    if let arrSubLayer = layer.sublayers, arrSubLayer.count > 1 {
      arrSubLayer[1].cornerRadius = 12
    }
    self.thumbTintColor = .clear
}

它将检查子图层。如果有的话,它将在您尝试访问索引 1 时检查计数 > 1。