Personnaliser le bouton Airplay de l'apparence
- Je utiliser un standard incrustation de dégradé (qui se fait dans photoshop) pour faire des boutons de regarder de plus agréable dans mon application. J'ai ajouté un bouton Airplay, mais l'esthétique ne correspondent pas.
J'ai vraiment envie de mettre un calque de dégradé sur elle afin qu'elle corresponde, mais tout ce que je peux trouver montre seulement comment faire cela avec un png, pas un existant UIView. Si ce n'est le calque de dégradé, j'ai juste besoin d'une certaine manière, tout façon, pour changer l'apparence de l'airplay d'Apple bouton tout en gardant sa fonctionnalité intact.
Le code d'installation est simple:
MPVolumeView *volumeView = [[MPVolumeView alloc] initWithFrame:frame];
[volumeView setShowsVolumeSlider:NO];
[bottomPanel addSubview:volumeView];
Comment puis-je obtenir l'apparence de ce match de mes commandes?
- Si d'autres ont lu cette question après qu'il a été répondu: ne jamais modifier le glyphe/de forme et de position!! je vous Remercie 🙂
- En d'autres termes, "comment faire un bouton actif apparaissent désactivé?" Je vous suggère de ne pas confondre l'utilisateur à la place et vos images en blanc.
- L'ensemble de l'INTERFACE utilisateur est le thème de cette discrète style, et l'INTERFACE utilisateur de l'application a été très apprécié. Merci pour votre avis si.
- "L'itinéraire bouton est visible par défaut quand il n'y a plus d'une sortie audio d'itinéraire." Je n'ai qu'une sortie audio, donc je ne peux même pas avoir le bouton pour afficher. Est-il de toute façon à simuler plusieurs sorties audio afin que je puisse jouer avec ce bouton?
- Si seulement je pouvais obtenir le bouton apparaisse, je voudrais faire un réel effort pour changer son apparence.
- B: itunes.apple.com/us/app/airview/id412370918
- Je vous remercie. J'ai trouvé un casque bluetooth avant que j'ai vu votre lien. J'espère vous voir ma réponse avant le bounty expire.
Vous devez vous connecter pour publier un commentaire.
Je pense qu'il y a une meilleure solution à ce depuis iOS 6:
Utilisation
- (void)setRouteButtonImage:(UIImage *)image forState:(UIControlState)state;
sur MPVolumeView.
Voir
https://developer.apple.com/Library/ios/documentation/MediaPlayer/Reference/MPVolumeView_Class/index.html#//apple_ref/occ/instm/MPVolumeView/setRouteButtonImage:forState:
Après avoir accepté @Erik B la réponse de l'attribution de la prime à lui, j'ai trouvé qu'il y avait plus de peaufinage nécessaire pour le faire fonctionner. Je suis de poster ici pour le bénéfice des générations futures AFIN de chercheurs.
Le problème que je voyais était que les mécanismes internes des boutons d'attribuer, pour l'image en fonction de l'actuel airplay état. Ainsi, toutes les personnalisations que j'ai fait pendant init ne colle pas si le récepteur Airplay s'en alla, ou de l'état a été modifié d'une certaine manière. Pour résoudre ce problème, j'ai installé une KVO observation sur le bouton de
alpha
clé. J'ai remarqué que le bouton est toujours délavé in/out qui est une animation suralpha
.Puis-je observer la variation de la valeur des boutons
alpha
.N'oubliez pas de retirer l'observateur si vous détruisez le bouton
Basé sur le code de l'observation, le bouton pause si Apple change la vue sur l'intérieur de la hiérarchie de l'
MPVolumeView
à ajouter/supprimer/modifier les points de vue tels que le bouton de démarrage. Cela en fait une sorte de fragile, donc à utiliser à vos risques et périls, ou venir avec un plan b au cas où cela se produit. Je l'utilise depuis plus d'un an en production sans problèmes. Si vous voulez le voir en action, consultez le principal acteur de l'écran dans AmbianceJ'ai enfin trouvé un casque bluetooth pour que je puisse tester le bouton. Changer son apparence était très simple. Voici le code:
C'est tout là est à lui.
Le code ci-dessus ne fonctionne pas pour moi (comme le bouton AirPlay est ajouté plus tard). Comme solution de contournement, vous pouvez un standard UIButton dans votre INTERFACE utilisateur et de déclencher un AirPlay dans un (caché)
MPVolumeView
bouton avecUn effet secondaire est que le bouton ne pas masquer automatiquement quand une seule voie est disponible, qui peut ou peut ne pas être le comportement désiré.
J'ai créé une méthode personnalisée qui fonctionne parfaitement...