iOS 9: Comment faire pour modifier le volume par programmation sans montrer le système de barre de son popup?
J'ai du modifier le volume de l'iPad et à l'aide de ce code:
[[MPMusicPlayerController applicationMusicPlayer] setVolume:0];
Mais ce changement de volume et montrant système de barre de volume sur iPad. Comment changer le son, sans affichage de la barre de volume?
Je sais, setVolume:
est obsolète, et tout le monde dit d'utiliser MPVolumeView
. Si c'est le seul moyen de résoudre mon problème, alors comment faire pour modifier le volume à l'aide de MPVolumeView
? Je ne vois pas de méthode dans MPVolumeView
qui change le son.
Dois-je utiliser les autres d'une autre classe avec MPVolumeView
?
Mais il est préférable d'utiliser MPMusicPlayerController
.
Merci pour les conseils!!!
Vous n'êtes pas censé changer le volume de la programmation, c'est l'ensemble de point de
setVolume:
désapprouvée. Vous application pourrait être rejetée.OriginalL'auteur mgv | 2015-10-16
Vous devez vous connecter pour publier un commentaire.
MPVolumeView
a un curseur, et en changeant la valeur du curseur, vous pouvez modifier le volume de l'appareil. J'ai écrit unMPVolumeView
extension d'accéder facilement le curseur:Le travail pour moi! Thx!
c'était super utile
Ceci est-il toujours travailler dans iOS 11.4?
J'ai ajouté de la solution de travail sur iOS 11.4 ici stackoverflow.com/questions/33168497/...
OriginalL'auteur udjat
Pour 2018, de travail sur iOS 11.4
Vous avez besoin de changer
slider.value
après un petit retard.Utilisation:
Objective-C version
Il travaille toujours avec 0,01 retard, sans montrer le système de barre de son. Sembler peut être avez vous un problème supplémentaire ici. De toute façon, upvoted votre commentaire pour quelqu'un d'autre a le même problème. Merci!
Comme je sais, ce message d'avertissement s'affiche à chaque fois que
MPVolumeView
est initialisé (à partir de xib, storyboard ou par programmation). Actuellement, semblent comme il fonctionne toujours bien avec cet avertissement et que personne n'a de solution pour éviter d'avertissement dans ce cas.J'ai essayé sur iOS 12.0 et il fonctionne comme prévu. Assurez-vous que vous exécutez sur un périphérique réel, pas un simulateur. Si cela ne fonctionne toujours pas, vous pouvez essayer d'augmenter le temps de retard comme AndreaGorrieri commentaire ci-dessus.
Bien sûr, il faut l'appeler sur le premier plan.
OriginalL'auteur trungduc
Je ne pense pas qu'il y est une manière de changer le volume sans clignotant contrôle du volume. Vous devez utiliser
MPVolumeView
comme ceci:OriginalL'auteur Abhinav
@udjat 's réponse en Swift 3
OriginalL'auteur BumMo Koo
Voici une solution rapide. Il pourrait être une ombre, donc je vais vous laisser savoir si Apple a approuvé ce lorsque je publie. Entre-temps, cela fonctionne bien pour moi:
Définir un MPVolumeView et une option de UISlider dans votre Vue-Contrôleur
Dans le storyboard, définir un point de vue qui est caché de l'utilisateur (hauteur=0 devrait faire l'affaire), et de définir un exutoire pour elle (nous allons l'appeler hiddenView ici). Cette étape est seulement bon si vous ne voulez PAS afficher le volume de la PALETTE lors de la modification du volume (voir la note ci-dessous):
Dans le viewDidLoad() ou quelque part init-y qui exécute une fois, attraper le UISlider qui contrôle réellement le volume dans l'option UISlider à partir de l'étape (1):
Lorsque vous voulez mettre du volume dans votre code, il suffit de définir volumeSlider?.une valeur entre 0.0 et 1.0, par exemple, pour augmenter le volume:
Remarque importante:
Cette solution sera empêcher de l'iPhone, le Volume de la PALETTE de l'apparition de - soit lorsque vous modifiez le volume dans votre code, ou lorsque l'utilisateur clique sur les boutons de volume externes. Si vous ne voulez afficher la PALETTE, puis de sauter tout le caché de la vue des choses, et ne pas ajouter de la MPVolumeView comme une sous-vue à tous. Ce sera la cause de iOS pour afficher la PALETTE lorsque les changements de volume.
OriginalL'auteur deebugger
Version: Swift 3 & Xcode 8.1
Salut @JonathanPlackett, vous pouvez essayer comme ceci:
self.volumeSlider.value = 1 // get the max volume
BTW, soi signifie MPVolumeView instance. L'espoir de l'aider.OriginalL'auteur Jerome
Utilisation:
OriginalL'auteur Senseful
Swift > 2.2, iOS > 8.0,
Je n'ai pas trouvé la solution que je cherchais mais j'ai fini par faire ce qu'solution:
OriginalL'auteur CodeOverRide
Vous pouvez utiliser la valeur par défaut UISlider avec ce code:
suivant dans le code, il suffit d'écrire
OriginalL'auteur Андрій Вахній