【问题标题】:Custom UISlider inner bar corner radius issue iOS 14自定义 UISlider 内栏角半径问题 iOS 14
【发布时间】:2021-02-11 13:38:02
【问题描述】:

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

*** 由于未捕获的异常 'NSRangeException' 导致应用程序终止,原因:'*** -[__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,这条线造成了问题。如果我评论此行代码可以正常工作。

【问题讨论】:

    标签: ios swift uislider rounded-corners cornerradius


    【解决方案1】:

    你可以使用if let...

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

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

    【讨论】:

    • 它不会导致崩溃,但内部仍然没有圆角半径。但同样的代码在旧版 Xcode 中也能正常工作。
    猜你喜欢
    • 2020-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-05
    • 2017-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多