2009-07-09 7 views
1

Je souhaite définir l'image du curseur d'un curseur pour un état normal, tout en conservant les images de piste par défaut.Personnalisation de l'apparence d'UISlider

donc je fais ceci:

[theSlider setThumbImage:[UIImage imageNamed:@"my_thumb.png"] 
forState: UIControlStateNormal]; 

et je reçois mon image apparaissent comme le pouce, mais par défaut des images de la piste disparaissent.

Vous ne pouvez pas personnaliser l'image du pouce et laisser les images de la piste par défaut?

Répondre

2

Il ne semble pas que ce soit possible, étrangement.

Pour contourner le problème, vous avez plusieurs choix. Il ne devrait pas être trop difficile de capturer et d'extraire les graphiques nécessaires pour créer vos propres images de piste min et max presque identiques. Vous aurez besoin d'obtenir les bords arrondis et quelques pixels de la partie plate qui sera étirée.

Alternativement, vous pouvez essayer d'extraire les images réelles en utilisant cette technique: Extract UIKit artwork

Personnellement, je ne vois pas pourquoi vous ne pouvez pas mélanger et faire correspondre des graphiques personnalisés avec des graphiques par défaut, mais cela semble être comment Apple a mis en place ce contrôle.

+0

@ pix0r merci pour le lien, je vais essayer. Le SDK d'Apple est plein de surprises, n'est-ce pas :) Je n'ai rien vu dans les docs disant que si vous personnalisez une image, vous devez tout faire. Je vais soumettre un bug à apple –

0

Lors de la création de votre UISlider, que ce soit dans Interface Builder ou de manière progmatique, veillez à définir la variable Continue sur YES. (c'est-à-dire [mySlider setContinuous: YES]). Une fois cette variable définie, vous devriez pouvoir utiliser vos propres images de pouce.

+0

Merci de l'avoir posté. J'ai finalement eu l'occasion d'essayer votre solution de contournement, mais pour une raison quelconque, il ne le fait pas pour moi. Fais-tu autre chose? –

+0

J'ai juste essayé la solution de contournement moi-même, et ça ne marche plus, très bizarre! Pour résoudre ce problème, j'ai supprimé le curseur que j'utilisais dans IB et j'en ai ajouté un autre, en attachant l'ancienne référence au nouveau curseur. Cela a fonctionné, j'espère que cela fonctionnera pour vous si vous en avez encore besoin. :) –