【问题标题】:How to show a customizable view into all view controller?如何在所有视图控制器中显示可自定义的视图?
【发布时间】:2017-05-28 10:41:02
【问题描述】:

这个问题有点详细,我真正想知道什么。我想做一个应用程序,它的某些功能看起来像 SoundCloud 和 gaana。下面我展示一些 gaana 的截图。

在这里,如果我们单击任何歌曲,它们会自动更新上面的视图并播放歌曲,并且此视图将显示到所有视图控制器中。单击此向上箭头按钮,它们如何显示一个新视图,而以前的小视图不在其中并将集合视图加载到这个新视图中。如何执行所有这些操作?新视图就在这里。

【问题讨论】:

  • 你可以用一个弹出框来做到这一点,并将锚点设置为你的按钮。
  • 你能用一些代码和图片解释一下吗?这对我有很大帮助。我可以弹出一个视图来单击一个按钮,但我的播放器保持在同一个位置,而且在这个视图中我需要一个集合视图来显示推荐歌曲。

标签: ios swift uiview swift3


【解决方案1】:

您可以通过创建叠加层来做到这一点,即将UIView 作为子元素添加到应用的主window 中,如下所示:

override func viewDidAppear(_ animated: Bool) {
     super.viewDidAppear(animated)
     showOverlay()
}


func showOverlay() {
    guard let window = UIApplication.shared.keyWindow else {
        //if this block runs we were unable to get a reference to the main window
        print("you have probably called this method in viewDidLoad or at some earlier point where the main window reference might be nil")
        return
    }
    //add some custom view, for simplicity I've added a black view
    let blackView = UIView()
    blackView.backgroundColor = .black
    blackView.translatesAutoresizingMaskIntoConstraints = false
    blackView.frame = CGRect(x: 0, y: window.frame.height - 100, width: window.frame.width, height: 100.0)

    window.addSubview(blackView)
}

现在这个视图应该总是浮动在当前UIViewController之上

【讨论】:

  • 我可以使用我知道的 keywindow 添加这个视图。但是单击向上按钮它会在前一个视图消失的地方创建一个新视图。我也可以以编程方式执行此操作,但新窗口有一个集合视图或表视图。表视图也正确显示,但数据源没有到达这里。索引路径处的行单元格没有调用。为什么会发生我不知道。你能测试一下并回答我吗?谢谢你的帮助。
  • 恐怕我不太明白你的问题。您能否用更详细的描述更新您的问题。也请注意语法。
猜你喜欢
  • 2015-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多