我正在使用applicationMusicPlayer,當我嘗試更改音量時出現視覺通知,如圖所示。 這裏我使用的代碼:applicationMusicPlayer音量通知
[MPMusicPlayerController applicationMusicPlayer] setVolume:newVolune];
任何人都知道如何隱藏此通知?
我正在使用applicationMusicPlayer,當我嘗試更改音量時出現視覺通知,如圖所示。 這裏我使用的代碼:applicationMusicPlayer音量通知
[MPMusicPlayerController applicationMusicPlayer] setVolume:newVolune];
任何人都知道如何隱藏此通知?
我不知道在哪裏的文檔是這麼說的,但如果你添加一個MPVolumeView
以您的應用程序的系統音量覆蓋消失。即使是不可見的:
- (void) viewDidLoad
{
[super viewDidLoad];
MPVolumeView *volumeView = [[MPVolumeView alloc] initWithFrame: CGRectZero];
[self.view addSubview: volumeView];
[volumeView release];
...
}
可以使用硬件音量按鍵,setVolume
方法或直接與控件交互(如果可見)的覆蓋不顯示。
我在iOS 6中取得了成功,雖然效果不佳。滑動thumbImage時會導致相當多的延遲。我必須拿出最後2行代碼才能工作。
[volumeView release];
...
對於iOS6的我不得不爲了得到默認音量改變通知消失用α0和非零尺寸與MPVolumeView
的圖像場以設置的圖像。
// hide the hardware volume slider
UIImage *thumb = [[UIImage alloc] initWithCIImage:[UIImage imageNamed:@"volumeHider"].CIImage scale:0.0 orientation:UIImageOrientationUp];
MPVolumeView *hwVolume = [[MPVolumeView alloc] initWithFrame:self.frame];
[hwVolume setUserInteractionEnabled:NO];
hwVolume.showsRouteButton = NO;
[hwVolume setVolumeThumbImage:thumb forState:UIControlStateNormal];
[hwVolume setMinimumVolumeSliderImage:thumb forState:UIControlStateNormal];
[hwVolume setMaximumVolumeSliderImage:thumb forState:UIControlStateNormal];
[self addSubview:hwVolume];
這使得MPVolumeView
在屏幕上「看得見」,但對用戶不可見。
我有一個時間讓這個工作在iOS 6.1.4以及mpmusicplayercontroller setvolume。我只是試圖將我的應用程序的音量設置爲我的初始viewcontroller狀態,但當setvolume發生時隱藏系統音量覆蓋...我是否需要把代碼放在其他地方? – snownskate
編輯:我把你的代碼放在viewDidLoad中,我把MPMusicPlayerController的setvolume放在超級viewDidLoad中。 – snownskate
通過將上面的代碼放在我的初始VC中,然後在隨後的VC上執行setvolume來實現這個工作。絕對不是可取的方法,並且不確定這是其他人如何工作的方式,但安裝恰好適用於我的應用程序佈局 – snownskate
對於我而言,在iOS 7上,以上解決方案都不起作用。這是我如何做的:
_volume = [[MPVolumeView alloc] initWithFrame: CGRectMake(-100,-100,16,16)];
_volume.showsRouteButton = NO;
_volume.userInteractionEnabled = NO;
[self.view addSubview:_volume];
[_volume release];
也就是說,只要設定MPVolumeView的框架屏幕外的位置,如(-100,-100)。
我最近遇到同樣的問題。
CGRect rect = CGRectMake(-500, -500, 0, 0);
MPVolumeView *volumeView = [[MPVolumeView alloc] initWithFrame:rect];
[self.window addSubview:volumeView];
這個工作在兩個iOS的7和8
謝謝,爲我工作。不知道爲什麼蘋果決定改變iOS 8。 – Ashley
斯威夫特3:而不是添加MPVolumeView當前視圖控制器的看法,我在應用的開始將其添加到應用程序的窗口一次
您可以隱藏使用
override func viewDidLoad() {
super.viewDidLoad()
let volumeView = MPVolumeView(frame: CGRect.zero)
self.view.addSubview(volumeView)
}
我有一個問題瓦特的系統MPVolumeView這顯示了AirPlay圖標,即使在CGRectZero中,由於我們的無線網絡上沒有AirPlay設備,所以在測試過程中沒有發生這種情況。你需要設置volumeView.showsRouteButton = NO; –
@AshFurrow,madmw,當我嘗試在我的應用程序中訪問上面的代碼時,它向我展示錯誤,如'使用未定義的對象volumeView'。如何解決它?任何需要的頭文件或框架? – Hemang
@Hemang在文檔中搜索MPVolumeView,你會看到它是MediaPlayer.framework的一部分直到沒有編譯器抱怨爲止。 – djromero