【问题标题】:Hide volume HUD (avoid use of loaded view)隐藏音量 HUD(避免使用加载视图)
【发布时间】:2018-08-18 06:00:15
【问题描述】:

此问题与没有重复:


我想隐藏系统音量HUD,同时以编程方式调整音量,而不需要加载视图。


所以这个解决方案不是我想要的(在我的情况下这是不可接受的):

let volumeView = MPVolumeView(frame: .zero)
view.addSubview(volumeView)

我想要一个工作函数来隐藏volumeView,同时避免添加隐藏的Subview。

这是我到目前为止所得到的(但是目前这不起作用):

func hideHUD() {
  let volumeWindow: UIWindow = UIWindow()
  let volumeView = MPVolumeView(frame: .zero)

  volumeView.isHidden = false
  volumeWindow.isHidden = true
  volumeWindow.addSubview(volumeView) 
}

注意:我很确定可以通过编程方式隐藏音量 HUD,因为 VolumeBar API (you can find here) 能够隐藏 HUD 并替换有自己的风格!

【问题讨论】:

  • 正如我从阅读 SO 中收集到的那样,您尝试使用的方法仅在 AVAudioSession 处于活动状态时才有效(视频可能也有效)。所以这是让它以这种方式工作的必要条件。
  • 添加了这一行 - 但也不会影响我的代码:try AVAudioSession.sharedInstance().setActive(true)
  • 另外添加一个类别:try! AVAudioSession.sharedInstance().setCategory(.ambient, mode: .default, options: [])

标签: ios iphone swift view volume


【解决方案1】:

您想要的似乎不可能。您链接的 VolumeBar 项目使用不可见的 MPVolumeView 来隐藏系统 HUD,就像其他人建议的那样。 See here

/// A standard iOS `MPVolumeView` that never appears but is necessary to hide the system volume HUD.
private let systemVolumeView: MPVolumeView

...

// Add a non-hidden MPVolumeView with a zero frame to prevent the system volume HUD from showing
systemVolumeView = MPVolumeView(frame: .zero)
systemVolumeView.isHidden = false
systemVolumeView.clipsToBounds = true
systemVolumeView.showsRouteButton = false
systemVolumeView.alpha = 0.0001

来源:https://github.com/gizmosachin/VolumeBar/blob/master/Sources/Internal/VolumeBarWindow.swift

【讨论】:

    猜你喜欢
    • 2014-08-18
    • 1970-01-01
    • 1970-01-01
    • 2019-04-30
    • 1970-01-01
    • 2018-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多