【问题标题】:How do you implement an MPVolumeView?如何实现 MPVolumeView?
【发布时间】:2011-02-17 05:50:00
【问题描述】:

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

但我找不到任何示例代码,而且我尝试实现的每个方法都不会显示。

那么实现 MPVolumeView 最简单、最正确的工作方式是什么?

【问题讨论】:

  • 只是将它添加为某些屏幕视图的子视图?应该做我认为的工作。

标签: ios iphone volume mpvolumeview


【解决方案1】:

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

【讨论】:

  • 谢谢,它现在可以工作了,我现在只需要帮助将它放在 UIAlertView 中。stackoverflow.com/questions/2829234/…
  • 通过更改 UISlider 可以正常工作,只需确保添加 MediaPlayer.framework 否则它将仅显示为 UISlider
  • 感谢您的帮助。它在模拟器上不起作用真的很烦人。如果您想始终隐藏右侧的按钮(路由按钮),请同时添加 myVolumeView.showsRouteButton = NO;
【解决方案2】:

使用它会自动获取它

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

【讨论】:

  • 当有人询问示例时,我在从苹果文档中复制代码方面没有看到太多帮助...developer.apple.com/library/ios/documentation/MediaPlayer/…
  • 这很有帮助,因为您不应该发布链接而是发布解决方案。此代码在十年后仍会存在(可能),链接可能在下周失效。
  • 等等。但是按照这个逻辑,如果这个链接十年后失效怎么办? :O。互联网坏了! :O。仅供参考 5 年后,链接很好,除了与此示例不同的是,它已更新和维护。
  • ^ 不能保证第 3 方链接将保持有效。
【解决方案3】:

在 iOS 13 中,这种情况发生了变化。在 IB 中添加滑块并将其类设置为 MPVolumeView 不再起作用。所以接受的答案不再有效。 正如 Apple 文档中所述,正确的方法是在 IB 中使用 UIView,然后在代码中添加 MPVolumeView 作为子视图。 在 Swift 中是这样的:

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

此方法也适用于 iOS 12。

【讨论】:

    猜你喜欢
    • 2011-04-18
    • 2015-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多