私は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行を取り出しなければなりませんでした。 iOS6のために
[volumeView release];
...
私が消えるためのデフォルトのボリュームの変更通知を得るためにMPVolumeView
の画像フィールドにアルファ0と非ゼロのサイズで画像を設定する必要がありました。
// 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
は、画面上の「目に見える」が、ユーザーには見えないことが行わ。
私は、私の最初のviewcontrollerの状態に自分のアプリケーションのボリュームを設定しようとしているだけで、iOS 6.1.4のmpmusicplayercontroller setvolumeと一緒にこれを動作させる時間を、 setvolumeが発生したときにシステムボリュームオーバーレイを非表示にするにはどうすればいいですか? – snownskate
edit:私はあなたのコードをviewDidLoadに入れていますが、私はsuper viewDidLoadにMPMusicPlayerController setvolumeを入れています – snownskate
これは私の最初のVCに上記のコードを入れて、その後のVCのsetvolumeを実行することによって得られました。望ましいアプローチではなく、それが他の人の作業方法であるかどうかは分かりませんが、 – snownskate
私にとっては、iOS 7では上記の解決策のどれもうまくいきませんでした。ここでは、私はそれをやった方法です:
、単純な(-100、-100)とオフスクリーンの場所にMPVolumeViewのフレームに設定されている_volume = [[MPVolumeView alloc] initWithFrame: CGRectMake(-100,-100,16,16)];
_volume.showsRouteButton = NO;
_volume.userInteractionEnabled = NO;
[self.view addSubview:_volume];
[_volume release];
。
私のために働いていないいいえ:( –
私のために働いていませんでした。私は怠惰なローディングと自分でinitメソッドで試しました。もう近づくことはなかった:( –
私のために働いていない。 – piaChai
最近同じ問題が発生しました。代わりに、現在のView ControllerのビューにMPVolumeViewを追加するので、私はアプリの起動時に一度、アプリケーションのウィンドウに追加:
CGRect rect = CGRectMake(-500, -500, 0, 0);
MPVolumeView *volumeView = [[MPVolumeView alloc] initWithFrame:rect];
[self.window addSubview:volumeView];
これは、両方のiOSで7と8
ありがとう、私のために働いた。なぜAppleがiOS 8のためにそれを変更することを決めたのか分からない。 – Ashley
スウィフト3作品あなたは
override func viewDidLoad() {
super.viewDidLoad()
let volumeView = MPVolumeView(frame: CGRect.zero)
self.view.addSubview(volumeView)
}
を使用して、システムMPVolumeViewを非表示にすることができます
私は問題wを持っていましたこれは私たちのWiFiネットワークにAirPlayデバイスがなかったため、テスト中には発生しなかったCGRectZeroのAirPlayアイコンを示しています。 volumeView.showsRouteButton = NOを設定する必要があります。 –
@AshFurrow、madmw、私は私のアプリケーションで上記のコードにアクセスしようとしたとき、私は '不明なオブジェクトvolumeViewの使用 'のようなエラーを表示します。それを修正するには?必要なヘッダファイルやフレームワークはありますか? – Hemang
@HemangでMPVolumeViewを検索すると、MediaPlayer.frameworkの一部になります。コンパイラが不平を言うまで繰り返します。 – djromero