自定义UISlider内部栏角半径发行iOS 14

问题描述

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

***由于未捕获的异常'NSRangeException'而终止应用程序,原因:'***-[__ NSSingleObjectArrayI objectAtIndex:]:索引1超出范围[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时检查count> 1。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...