Как я знаю, MPVolumeView может добавить в мое приложение для изменения объема. Но теперь я хочу контролировать объем с помощью пользовательского слайдера. Может быть, я могу поместиться сам, если MPVolume был подклассом uislider, действительно, это подкласс uiview. Попросите совета, чтобы реализовать мою идею, большое вам спасибо.Могу ли я использовать пользовательский слайдер для управления громкостью?
ответ
UIView *a=[[UIView alloc] init];
for (UIView *view in [volumeSlider subviews]) {
if ([[[view class] description] isEqualToString:@"MPVolumeSlider"]) {
a=view;
[(UISlider *)a setThumbImage:[UIImage imageNamed:@""] forState:UIControlStateNormal];
[(UISlider *)a setMinimumTrackImage:[UIImage imageNamed:@"volume2.png"] forState:UIControlStateNormal];
[(UISlider *)a setMaximumTrackImage:[UIImage imageNamed:@"volume3.png"] forState:UIControlStateNormal];
}
}
, что может делать то, что я хочу, но я действительно не знаю, если он может пройти от Apple проверки
Hummm, вы можете создать свой собственный слайдер, но он не будет контролировать громкость проигрывателя, который вы хотите. Вам придется работать с низкоуровневыми Framework, такими как CoreAudio и CoreMedia.
Почему не подкласс MPVolumeView? Я никогда не пробовал subclassing MPVolumeView , но вы можете получить доступ к @ защищенным материалам путем подклассификации и @private, добавив некоторые категории. Вероятно, вы хотите посмотреть заголовки MPVolumeView, чтобы увидеть, есть ли UISlider (или что-то еще), которое вы можете настроить.
UPDATE: (2010/07/21)
я вижу. Просто позвольте мне спросить у что-то. Почему необходимо добавить UIProgressView в VolumeView? В общем, вы добавили бы это в Воспроизведение Игрока, но к его Объемному праву? громкость не загружается, как потоковое аудио или видео?
Во-вторых, я только что видел заголовки MPVolumeView. И у него есть закрытый, также скрытый класс с именем MPVolumeViewInternal * _internal; Если у вас есть такие классы, если их очень сложно настроить, не будучи отвергнутыми (при отправке приложения в AppStore) Вы можете создать категорию и получить доступ к _internal var, но для использования _internal вам придется иметь свои заголовки и это означает использование закрытых заголовков и фреймворков, которые не разрешены.
Или вы можете взглянуть на функции в Objective-C runtime Reference и попробовать что-то вроде drawonward, чтобы найти UISlider объекта, который вы хотите изменить. Использование функций времени выполнения Obj-C - это то, как выполняются большинство трюков или простых взломов;)
Если вы идете по иерархии представлений MPVolumeView и обнаруживаете UISlider, вы всегда можете ее настроить.
for (view in theVolumeView.subviews) {
if ([view isKindOfClass:[UISlider class]]) { ... }
}
Обратите внимание, что будут и другие мнения, и не может быть UISlider, поэтому не делают никаких предположений. Возможно, вы захотите перевести иерархию рекурсивно.
О, в MPVolumeView нет ни одного члена класса uislider, но есть 3 подвид, я бы хотел посмотреть, что это такое ~~ – ben
вы имеете в виду isKindOfClass :. –
@tc Спасибо, я всегда смешиваю их. – drawnonward
Сделать UIView в строителем Interface Ссылка против рамок MP включает заголовок MediaPlayer в ваш заголовочный файл, который соответствует XIB, который содержит UIView, который вы только что сделали Измените класс только что созданного представления на MPVolumeView
Он не будет работать на симуляторе, но он работает на устройствах.
Другим вариантом было бы с помощью пользовательского слайдера с MPMusicPlayerController
:
MPMusicPlayerController *controller = [MPMusicPlayerController applicationMusicPlayer];
controller.volume = 0.5; // value in [0,1]
вот полный код ползуну пользовательского тома. он протестирован и работает на xcode 4.6.1
MPVolumeView *volumeView = [[[MPVolumeView alloc] initWithFrame:volumeSlider.bounds] autorelease];
UIView *a=[[UIView alloc] init];
for (UIView *view in [volumeView subviews]) {
if ([[[view class] description] isEqualToString:@"MPVolumeSlider"]) {
a=view;
[(UISlider *)a setThumbImage:[UIImage imageNamed:@"slider_thumb.png"] forState:UIControlStateNormal];
[(UISlider *)a setMinimumTrackImage:[UIImage imageNamed:@"slider_progress.png"] forState:UIControlStateNormal];
[(UISlider *)a setMaximumTrackImage:[UIImage imageNamed:@"slider_bg.png"] forState:UIControlStateNormal];
}
}
[volumeSlider addSubview:volumeView];
[volumeView sizeToFit];
вы можете объявить имена изображений в верхней или в файле заголовок для более легких последующих модификаций
- 1. Jssor - Могу ли я использовать ваш слайдер для коммерческого использования?
- 2. AIR для IOS StageVideo управления громкостью
- 3. Могу ли я надежно использовать пользовательский контроль WPF в winform?
- 4. Могу ли я использовать пользовательский сеанс для не визуального назначения?
- 5. Могу ли я использовать функции jquery keyup для элементов управления mediaelement.js
- 6. Могу ли я использовать императора uWSGI для управления фоновым процессом?
- 7. Могу ли я использовать JQuery для управления D3
- 8. Могу ли я использовать триггер для переключения между элементами управления
- 9. Как я могу создать пользовательский вертикальный слайдер в C#?
- 10. Могу ли я использовать MCP3008 для вывода?
- 11. Ищете способ управления громкостью звука и панорамированием
- 12. Чтобы создать компонент управления громкостью, аналогичный компоненту Youtube
- 13. Элементы управления громкостью вверх и вниз
- 14. панель управления для изображений слайдер
- 15. Как я могу управлять функциями управления наушниками?
- 16. Кнопки управления громкостью, назначенные кнопкам приложения iOS
- 17. Пользовательский навигационный слайдер
- 18. Каков способ управления громкостью в MIDI-секвенсере?
- 19. Могу ли я создать пользовательский элемент подкачки для gridview?
- 20. Могу ли я использовать пользовательский вид в качестве разделителя NSSplitView?
- 21. Могу ли я использовать как пользовательский класс как тип данных?
- 22. Могу ли я использовать пользовательский «разделительный символ» в strtol
- 23. Управление звуком/громкостью
- 24. Могу ли я использовать django-нереле и пользовательский auth-сервер?
- 25. Должен ли я использовать систему управления контентом?
- 26. Могу ли я использовать элемент управления DetailsView без привязки?
- 27. Могу ли я использовать Silverlight в элементе управления ActiveX?
- 28. Пользовательский слайдер проблема
- 29. Могу ли я использовать пользовательский метод в инструкции WHERE?
- 30. Могу ли я использовать System.IO.Stream с элементом управления ActiveX VLC?
Так прошло ли это обзор Apple? – Moshe
он прошел обзор, сейчас в appstore! – ben
Вместо сравнения строки описания класса я бы вместо этого использовал '[view isKindOfClass: [UISlider class]]'. Кажется чистым, плюс MPVolumeSlider - подкласс UISlider, и таким образом у вас нет имени частного класса в вашем двоичном файле. – DarkDust