在iOS 8中存在问题或功能.当显示MPVolumeView时,它会被动画化,就像从0扩展到它的宽度一样.我该如何解决这个问题呢?在iOS 7上没有这样的问题.
我正在使用AVPlayer和MKVolumeView来显示本机AirPlay输出菜单.
在iOS 6中,无论状态栏的方向如何,AirPlay输出菜单似乎都以纵向显示.在iOS 5中,它遵循状态栏方向.
任何方式让它跟随状态栏,或至少强制方向?
所以我有一个iOS7应用程序,我正在使用MPVolumeView,所以用户可以控制音量级别.我有一个隐藏在此特定位置的路线按钮,MPVolumeView并使用另一个MPVolumeView禁用滑块作为我的AirPlay图标.
我的应用程序支持纵向和横向,并且在这两种不同模式下,音量滑块的宽度不同.
如果视图首先在横向模式下初始化,那么MPVolumeView它将正确调整其大小.
但是,当视图在纵向模式下初始化然后我旋转到横向模式时,应用程序中的所有其他内容都会被调整大小/移动,除了MPVolumeView唯一的移动,并且它不会像它应该的那样变短.
我正在使用自定义图像MPVolumeView,如果我删除了轨道的自定义图像,这个问题就消失了.
这是用于初始化的代码 MPVolumeView
self.volumeView = [[MPVolumeView alloc] initWithFrame:CGRectZero];
self.volumeView.showsRouteButton = NO;
self.volumeView.layer.borderColor = [[UIColor redColor] CGColor];
self.volumeView.layer.borderWidth = 1.0f;
if (AT_LEAST_IOS7) {
// TODO: BUGBUG iOS7 doesn't redraw this MPVolumeView correctly when it's frame changes (i.e. we rotate to the portrait view).
// These images simply make the bar a little thicker than the standard thickness (to match the iOS7 music app) but it's …Run Code Online (Sandbox Code Playgroud) 我已经开始MPVolumeView在我的应用程序中使用,但Air Play按钮根本没有出现.即使我有多个Air Play设备可以将我的AVPlayer音频发送到网络上.例如,如果从控制中心检查Air Play,可以看到这些.
这是我的代码:
myVolumeView = [MPVolumeView new];
[myVolumeView setShowsVolumeSlider:YES];
[myVolumeView setShowsRouteButton:YES];
myVolumeView.frame = _volumePanel.bounds;
[myVolumeView sizeToFit];
_myVolumeView.autoresizingMask = UIAutoresizingFlexibleWidth;
[_volumePanel addSubview:myVolumeView];
Run Code Online (Sandbox Code Playgroud)
非常简单的东西.我有一个AVPlayer运行一些音乐,就是这样.有趣的是,如果我从控制中心选择另一个Air Play设备,它会强制Air Play按钮出现在我的应用程序中MPVolumeView,但这有点不好.
如果在Xcode中我单击控制台上方的Debug Hierarchy Mode按钮,我可以在我的UI中看到Air Play按钮,但是它的Alpha是0.
我正在尝试创建一个警报应用程序,我注意到Sleep Cycle之类的应用程序会在警报响起之前将音量设置为最大,即使音量非常低.
我尝试过使用AVAudioPlayer,我在MPVolumeView上看到的只是用户必须这样做.有没有办法在没有用户必须的情况下将其打开?
谢谢您的帮助.
如果我可以请快速获取代码
我正在构建一个需要MPVolumeView来控制音量的应用程序.它在iOS 5.1之前完美运行,但自5.1更新以来,拇指图像不再垂直居中.我尝试了一些改变想象尺寸,调整视图大小(和滑块)的东西,但似乎没有任何效果,拇指不再垂直居中.我得到一个中心拇指的唯一方法是,如果我使用默认的iOS.
我尝试将UISlider添加到另一个视图,其中包含精确的最小,最大和拇指图像,并且其中心位置正常.
这是MPVolumeView的代码:
MPVolumeView *volumeView;
volumeView = [[[MPVolumeView alloc] initWithFrame:volumeViewHolder.bounds] autorelease];
[volumeViewHolder addSubview:volumeView];
UIView *volumeViewSlider;
for (UIView *view in [volumeView subviews])
{
if ([[[view class] description] isEqualToString:@"MPVolumeSlider"])
{
volumeViewSlider = view;
}
}
[(UISlider *)volumeViewSlider setThumbImage:sliderHandleIcon forState:UIControlStateNormal];
[(UISlider *)volumeViewSlider setMinimumTrackImage:leftTrackImage forState:UIControlStateNormal];
[(UISlider *)volumeViewSlider setMaximumTrackImage:rightTrackImage forState:UIControlStateNormal];
Run Code Online (Sandbox Code Playgroud)
volumeViewHolder只是一个153x33的UIView.我在屏幕截图中将拇指放在绿色中.

我正在使用MPVolumeView允许用户在使用我的应用程序时控制他喜欢的音频路径.
该代码显示了该视图:
self.volumeView = [[MPVolumeView alloc] initWithFrame:self.view.frame];
self.volumeView.showsVolumeSlider = NO;
[self.view addSubview:self.volumeView];
Run Code Online (Sandbox Code Playgroud)
当用户点击音频路由按钮时,会出现一个带有可用选项的菜单.
问题:显示音量视图的屏幕可能需要隐藏,因为我的应用程序处理各种事件,我想同时隐藏音频路由菜单(如果它当前显示)
我的问题:有没有人知道是否可以手动关闭MPVolumeView的音频路由选择菜单而无需用户按下取消按钮?
谢谢!
我的一个视图上有一个MPVolumeView,当有其他输出源可用时会出现一个Airplay图标.这一切都很好,但图标很小,无论我为MPVolumeView设置多大,它都不会变得更大.
任何人都知道如何增加airplay图标的大小?
我有一个UIToolBar,旨在包含用于控制音量和亮度的滑块.我为音量使用MPVolumeView滑块,为亮度使用普通的UISlider.虽然滑块本身工作正常,但它们的垂直位置不匹配:

如何让它们处于同一高度?
我的代码:
- (void) createToolbar{
toolBar = [[UIToolbar alloc] init];
toolBar.frame = CGRectMake(0, 0, self.view.frame.size.width, 44);
UISegmentedControl *modeSelector = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Play", @"Rec", nil]];
[modeSelector setSegmentedControlStyle:UISegmentedControlStyleBar];
[modeSelector addTarget:self action:@selector(changePlayMode) forControlEvents:UIControlEventValueChanged];
modeSelector.selectedSegmentIndex = 0;
UIBarButtonItem *modeSelectorAsToolbarItem = [[UIBarButtonItem alloc] initWithCustomView:modeSelector];
brightnessSlider = [[UISlider alloc] initWithFrame:CGRectMake(0, 0, 150, 30)];
brightnessSlider.minimumValue = 0;
brightnessSlider.maximumValue = 1;
brightnessSlider.value = [[UIScreen mainScreen] brightness];
brightnessSlider.continuous = YES;
[brightnessSlider addTarget:self action:@selector(adjustBrightness:) forControlEvents:UIControlEventValueChanged];
UIBarButtonItem *brightSliderAsToolbarItem = [[UIBarButtonItem alloc] initWithCustomView:brightnessSlider];
MPVolumeView *volView = [[MPVolumeView alloc] initWithFrame:CGRectMake(0, 0, …Run Code Online (Sandbox Code Playgroud) 自 iOS 13 起,MPVolumeView 中的 showsRouteButton 已被弃用
let vv = MPVolumeView()
vv.showsRouteButton = false
Run Code Online (Sandbox Code Playgroud)
警告是:
'showsRouteButton' was deprecated in iOS 13.0: Use AVRoutePickerView instead.
Run Code Online (Sandbox Code Playgroud)
Apple 告诉我使用 AVRoutePickerView 进行路由,这没有意义,因为在我的情况下我不想使用任何路由的东西,我只想隐藏它。似乎没有更多不被弃用的方法来做到这一点。
如果它被弃用,它应该默认隐藏,否则苹果应该允许我们隐藏它......
我说这是苹果 API 错误是否正确?
mpvolumeview ×10
ios ×9
objective-c ×3
avplayer ×2
airplay ×1
avfoundation ×1
deprecated ×1
ios5.1 ×1
ios6 ×1
ios7 ×1
ios8 ×1
iphone ×1
swift ×1
uislider ×1
uitoolbar ×1
uiview ×1
volume ×1