Почему в моем UIPickerView есть смещение невыбранных строк? - PullRequest
0 голосов
/ 12 июня 2019

Я пытаюсь создать свой собственный настраиваемый инструмент выбора даты, используя UIPickerView, и я хочу, чтобы первый компонент (с месяцем, днем, годом) был значительно шире, чем другие (для часа, минуты, AM / PM). ). Однако, когда я использую функцию pickerView(_:widthForComponent:), чтобы установить ширину этого компонента, равную 1/3 кадра, все выбранные в настоящий момент строки отображаются так, как я хочу, но все остальные строки в первом компоненте заканчиваются со странным смещением немного правее выбранной строки. Все компоненты, кроме широкого, кажутся нормальными как в выбранных, так и в невыбранных строках.

Я попытался поэкспериментировать с числами, и, кажется, не имеет значения, насколько узкими я делаю другие компоненты (на случай, если не хватает места). Любая ширина менее 1/3 рамки все еще вызывает проблему. Код выглядит следующим образом, с помощью средства выбора в качестве собственного делегата и источника данных:

func pickerView(_ pickerView: UIPickerView, widthForComponent component: Int) -> CGFloat {
    let fullWidth = self.frame.width
    switch component {
    case 0:
        return fullWidth/2
    default:
        return fullWidth/10
    }
}

Изменение его на fullWidth / 3 исправляет смещение, но компонент уже, чем мне бы хотелось. Даже немного большая ширина fullWidth / 2.95 вызывает проблему.

...