如何实现MPVolumeView?

11

我希望用户能够使用滑块来改变系统音量,我意识到唯一的方法是使用 MPVolumeView。

但我找不到任何示例代码,而且我尝试实现的每种方法都不起作用。

那么,使用 MPVolumeView 实现最简单、正确、有效的方法是什么?


1
只需将其作为某个屏幕视图的子视图添加即可?我想这应该可以完成工作。 - Joost
3个回答

11
将其放置为通用的 UIView,然后使用检查器将类设置为 MPVolumeView(确保还链接了 MediaPlayer 框架)。它在 IB 中仍将显示为常规滑块,但在运行时,它将是 MPVolumeView 的实例,并具有必要的样式和行为。请注意,这在 iOS 模拟器中可能无法按预期工作,因为该模拟器不允许音量控制。

谢谢,现在它可以工作了,我只需要帮助将它放置在UIAlertView中。http://stackoverflow.com/questions/2829234/mpvolumeview-in-a-uialertview - Emil
只需更改UISlider即可正常工作,但请确保添加MediaPlayer.framework,否则它将仅显示为UISlider。 - valexa
1
感谢您的帮助。真的很烦人,模拟器上不起作用。 如果您想始终隐藏右侧的按钮(路由按钮),还需添加myVolumeView.showsRouteButton = NO; - AlvaroSantisteban

3

使用此功能即可自动获取

mpVolumeViewParentView.backgroundColor = [UIColor clearColor];
MPVolumeView *myVolumeView = [[MPVolumeView alloc] initWithFrame: mpVolumeViewParentView.bounds];
[mpVolumeViewParentView addSubview: myVolumeView];
[myVolumeView release];

当有人要求示例时,我在苹果文档中复制代码并没有看到太多帮助... https://developer.apple.com/library/ios/documentation/MediaPlayer/Reference/MPVolumeView_Class/Reference/Reference.html#//apple_ref/occ/instp/MPVolumeView/showsVolumeSlider - AlvaroSantisteban
2
这非常有帮助,因为你不应该发布链接而是解决方案。这段代码将在未来十年仍然存在(也许),但链接可能在下周就失效了。 - gnasher729
等等。但是按照这个逻辑,如果这个链接在十年后失效了怎么办? :O. 互联网坏了! :O. 顺便说一下,五年后这个链接仍然有效,只不过与此示例不同的是,它已经被更新和维护了。 - KthProg
第三方链接没有保证会一直有效。 - jcpennypincher

2

iOS 13有所变化。在IB中添加一个类为MPVolumeView的滑块不再起作用,因此原先被接受的答案不再适用。 正确的方法如苹果文档所述,在IB中使用UIView,然后在代码中将MPVolumeView添加为子视图。 以下是Swift示例:

// myVolumeViewParentView is the UIView you put in IB
let myVolumeView = MPVolumeView(frame: myVolumeViewParentView.bounds)
myVolumeViewParentView.addSubview(myVolumeView)

这种方法在 iOS 12 中也适用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接