UIPickerView
で選択した行の色を変更する必要があります。UIPickerViewでselectedRowの色を変更します。転記時にも
私は色を変更することができましたが、質問にはすでにいくつかの回答がありますが、とにかくそれらは私を満足させません。これらの実装では、pickerviewのアニメーションはうんざりです。
これは、現在のソリューション
func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
var label: UILabel
if view == nil {
label = UILabel()
} else if view is UILabel {
label = view as! UILabel
} else {
label = UILabel()
}
let title: NSAttributedString
if self.model?.selectedValue == row {
title = UIPickerView.attributedString(with: .selectedRow, text: "\(model?.years[row] ?? 0)")
} else {
title = UIPickerView.attributedString(with: .unselectedRow, text: "\(model?.years[row] ?? 0)")
}
label.attributedText = title
return label
}
そして、ユーザーがスクロールのコードですが、私はコンポーネントをリロードします。
しかし、下の画像でわかるように、ユーザーがスクロールすると、緑色のフィールドが移動し、緑色のラベルがセレクターインジケーターの下にあり、選択された行が黒色になります。
は私が持っているしたいことは何が外に灰色のデフォルトの色合いを保ちながら、セレクタインジケータ内のすべてが緑であることです。
どうすれば実装できますか?
すでに試しましたが、動作しません。 私はまだ年が黒くなって緑色になるのを見ることができます。 –
あなたは何を意味するのか分かりません。スクロールするときに緑色を削除しますか? –
いいえいいえ、上下にスクロールすると、選択ビューに半分の文字列があり、残りの半分(選択されていない)の文字列の半分が半分の緑色と半分の灰色になります。 デフォルトのインプリメンテーションでは、色を使わないでスクロールすると半透明の黒と半透明の黒がアルファ<1で表示されます。 黒の代わりに緑色で同じ効果が欲しいです。 –