问题描述
在我的自定义UiSlider中,我想实现一个圆角的内部栏。我没有拇指。它在iOS 13中工作正常,但在14中它崩溃并显示错误:
***由于未捕获的异常'NSRangeException'而终止应用程序,原因:'***-[__ NSSingleObjectArrayI objectAtIndex:]:索引1超出范围[0 .. 0]'
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时检查count> 1。