15

iPad アプリケーションで MPMoviePlayer を使用してビデオ プレーヤーを実装し、ボリューム コントロールに MPVolumeView を使用しました。私の問題は、音量ビューをスクロールして音量を調整すると、下のスクリーンショットのようにデバイスの音量 hud オーバーレイが表示されることです。

ここに画像の説明を入力

このシステム ボリューム インジケータ hud を無効にするにはどうすればよいですか? 私のコードは次のとおりです。

@property (weak, nonatomic) IBOutlet MPVolumeView *playbackMPVolumeView;

//Customizing controller
- (void)customizeVolumeController
{
    _playbackMPVolumeView.showsRouteButton  = YES;
    _playbackMPVolumeView.showsVolumeSlider = YES;
    [_playbackMPVolumeView setVolumeThumbImage:[UIImage imageNamed:@"volume_slider_thumb.png"] forState:UIControlStateNormal];
}
4

14 に答える 14

6

ここに解決策があります

CGRect frame = CGRectMake(-1000, -1000, 100, 100);
MPVolumeView *volumeView = [[MPVolumeView alloc] initWithFrame:frame];
[volumeView sizeToFit];
[self.view addSubview:volumeView];
于 2015-12-16T12:57:29.290 に答える
5
- (void) viewDidLoad 
{
    [super viewDidLoad];
    MPVolumeView *volumeView = [[MPVolumeView alloc] initWithFrame: CGRectZero];
    [self.view addSubview: volumeView];
    ...
}

この参照は applicationMusicPlayer ボリューム通知から取得

于 2014-12-17T13:23:32.373 に答える
0

これは私にとってはうまくいきます。

MPVolumeView *volumeView2 = [[MPVolumeView alloc] initWithFrame:CGRectMake(-28, -2, 24, 24)];
[self.view addSubview:volumeView2];
volumeView2.showsVolumeSlider = true;
volumeView2.showsRouteButton = false;
_videoPlayer.AllowsAirPlay = false;
于 2016-12-17T07:02:50.150 に答える
0

以下のコードは、MPVolumeView をサブビューとして追加する以外に機能します。

AudioSessionInitialize(NULL, NULL, NULL, NULL);
AudioSessionSetActive(YES);
于 2016-06-15T09:10:35.807 に答える
0

これがSwiftでの上記のソリューションです。Swift 2-3 で動作します。

let frame = CGRect(x: -1000, y: -1000, width: 100, height: 100)
let volumeView = MPVolumeView(frame: frame)
volumeView.sizeToFit()
self.view!.addSubview(volumeView)
于 2016-10-17T00:11:41.413 に答える
0

MPVolumeView インスタンスを表示する場所にこれらの行を追加するだけです。例:トグルボリュームボタンがある場合

-(void)toggle
{
   self.volumeView.hidden = !self.volumeView.hidden;
   [self.volumeView willMoveToSuperview:self.volumeView.superview];
   [self.volumeView didMoveToSuperview];
}

ボリューム スライダーが常に表示されている場合 (MPVolumeView のインスタンス)。

-(void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    self.volumeView.hidden = NO;
    [self.volumeView willMoveToSuperview:self.volumeView.superview];
    [self.volumeView didMoveToSuperview];

}
于 2015-12-18T01:06:59.800 に答える
0

ボリューム オーバーレイを無効にするには、次の手順を実行する必要がありました。

AppDeletage.m:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  ...

  // disable volume hud
  CGRect rect = CGRectMake(-500, -500, 0, 0);
  MPVolumeView *volumeView = [[MPVolumeView alloc] initWithFrame:rect];
  [self.window addSubview:volumeView];
  return YES;
}

AppDelegate.h:

@interface AppDelegate : UIResponder <UIApplicationDelegate>

...
@property (nonatomic, strong) MPVolumeView   * volumeView;

@end

Objective C のみ、Swift なし。iOS 8.1 以降で動作します (以前のバージョンはテストされていません)。コンテキストなしで与えられた回答に基づいてこれを実装するのに苦労したため、これを追加しました。

于 2017-11-20T07:49:30.697 に答える