Я пытаюсь создать свой собственный настраиваемый инструмент выбора даты, используя 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 вызывает проблему.