如何在所有视图控制器中显示可自定义的视图?

时间:2017-05-28 10:41:02

标签: ios swift uiview swift3

问题是我真正想知道的一点点。我想制作一个应用程序,其功能看起来像SoundCloud和gaana。下面我将展示gaana的一些截图。

enter image description here

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

enter image description here

1 个答案:

答案 0 :(得分:0)

您可以通过创建叠加层来实现这一点,即您将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

之上