#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.