UIPickerViewでの列ごとに幅を指定する方法

UIPickerViewの列は、"おそらく"最初に表示されている文字列に応じて幅が調整されます。

たまにラベルが見切れる

なので、最初に表示されているラベルと残りのラベルの長さによっては、他の選択肢が見切れることがあります。

どうすると良い?

以下のような形で、どのUIPickerViewのどのコンポーネントかを確認して、指定したい横幅を返すときちんと設定できます。

コード

func pickerView(_ pickerView: UIPickerView, widthForComponent component: Int) -> CGFloat {
    if pickerView.accessibilityIdentifier == "datePicker" {
        switch component {
        case 0:
            return 300
        case 1:
            return 100
        case 2:
            return 150
        default:
            return 100
        }
    }
    return 100
}
さらに
もっと凝ったことをしたいときは、自分でUIViewを作って返すこともできます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です