Проблема с радиусом угла внутренней панели пользовательского интерфейса UISlider iOS 14

#ios #swift #uislider #rounded-corners #cornerradius

#iOS #swift #uislider #закругленные углы #cornerradius

Вопрос:

в моем пользовательском интерфейсе пользовательского интерфейса я хочу получить внутреннюю панель с закругленным углом. Я не использую большой палец. он отлично работает в 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.слой.подслои![1].cornerRadius = 12, эта строка создает проблему. Если я прокомментирую этот код строки, он будет работать нормально.

Ответ №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.

Комментарии:

1. это не приводит к сбою, но все же внутренняя часть не закруглена с радиусом угла. Но тот же код отлично работает в более старой версии Xcode.