Да, это так.Ниже приведен пример для одного компонента.
var pickerArray = [String]()
var selectedRow: Int {
return pickerView.selectedRow(inComponent: 0)
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
pickerView.reloadComponent(component)
}
func pickerView(_ pickerView: UIPickerView, attributedTitleForRow row: Int, forComponent component: Int) -> NSAttributedString? {
var color = UIColor.gray
if row == selectedRow {
color = UIColor.blue
} else if selectedRow == row - 1 || selectedRow == row + 1 {
color = UIColor.black
}
return NSAttributedString(string: pickerArray[row], attributes: [NSAttributedString.Key.foregroundColor: color])
}
Возможно, он существует другим способом, но я думаю, что этого будет достаточно:]
// Обновление 1: НЕ РЕКОМЕНДУЕТСЯ
Выможет переопределить (hitTest: point: событие) и вернуть себя из него, а затем перезагрузить компоненты (touchesMoved: touch: событие).НО свиток и касания на подборщике работать не будут.Вам нужно будет сделать что-то еще: (
// Update2: результат: