2010-08-07 11 views
3

J'ai une application qui affiche du texte dans un UIPickerView basé sur une recherche. Je veux mettre en évidence des lettres spécifiques dans la chaîne qui sont là à la suite d'un caractère générique. Par exemple, si je cherchais "CA?", L'une des lignes affichera "CAT" et je veux que la lettre "T" soit de couleur bleue.Comment changer la couleur de la police de caractères individuels dans une ligne UIPickerView?

Des idées? L'utilisateur reçoit une rétroaction immédiate au fur et à mesure de la frappe, de sorte que la performance est importante.

Répondre

1

Merci à David pour le conseil de commencer.

Je fini par utiliser la bibliothèque Three20 et en retournant une TTStyledTextLabel de pickerView: viewForRow: forComponent: reusingView: avec la propriété de texte défini sur [TTStyledText textFromXHTML: myXHTML] avec un TTDefaultStyleSheet pour définir les couleurs portées. Fonctionne très bien et semble être très rapide dans le composant UIPickerView.

1

Pour créer une chaîne ayant différentes propriétés de police pour différents caractères, vous utiliserez généralement NSAttributedString. Cependant, UIPickerView ne semble pas prendre directement en charge l'utilisation de NSAttributedString comme étiquettes pour vos composants de sélecteur, pas plus que UILabel ne semble les prendre en charge. Vous devrez peut-être créer une sous-classe personnalisée UIView et la renvoyer de pickerView:viewForRow:forComponent:reusingView: dans votre UIPickerViewDelegate.