如何阻止背景阻止Swift 4中的其他元素



我当前正在在swift 4/xcode 10中制作一个单个视图应用,其中屏幕上有一个动画背景和6个按钮,每个按钮链接到一个单独的ViewController。当我运行应用程序时,动画背景似乎移至前层并阻止所有按钮。我该如何制作以使按钮出现在背景前?

问题是,我没有通过编程来创建按钮,而是将它们从接口构建器中的对象库中拖放并删除。这就是为什么当我尝试在此处和这里发布的解决方案时,它不起作用,因为我不知道是否有任何实际代码引用任何按钮。例如,当我尝试

view.bringsubview(tofront:thebutton(

我不确定要放置什么来代替thebutton,甚至可以放置该代码段的位置。

以下是我在"主屏幕"视图控制器上拥有的代码。我最紧迫的问题是,我将在哪里插入代码以将按钮移至前面或背景向后。

import UIKit
import AVFoundation
import AVKit
class ViewController: UIViewController {
    @IBOutlet weak var videoView: UIView!
    override func viewDidLoad() {
        super.viewDidLoad()
        setupView()
    }
    private func setupView() {
        let path = URL(fileURLWithPath: Bundle.main.path(forResource: "Ocean_Waves_slow_motion_videvo", ofType: "mov")!)
        let player = AVPlayer(url: path)
        let newLayer = AVPlayerLayer(player: player)
        newLayer.frame = self.videoView.frame
        self.videoView.layer.addSublayer(newLayer)
        newLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill
        player.play()
        player.actionAtItemEnd = AVPlayer.ActionAtItemEnd.none
        NotificationCenter.default.addObserver(self, selector: #selector(ViewController.videoDidPlayToEnd(_:)), name: NSNotification.Name(rawValue: "AVPlayerItemDidPlayToEndTimeNotification"), object: player.currentItem)
    }
    @objc func videoDidPlayToEnd(_ notification: Notification) {
        let player: AVPlayerItem = notification.object as! AVPlayerItem
        player.seek(to: CMTime.zero)
    }
}

这是我的主板的样子。如果有帮助,层次结构当前是:

查看>视频视图>视图>按钮按钮按钮按钮

1st视图 ->视频视图 ->按钮按钮按钮按钮按钮

请勿将按钮BGView添加为视频视图的子视图。视频视图和按钮BGView应该是第一视图的子视图。

1st视图 ->视频视图

1st View->按钮bgview->按钮按钮按钮按钮

为按钮创建一个iBoutlet,并将该视图带到前面

class ViewController: UIViewController {
    @IBOutlet weak var videoView: UIView!
    @IBOutlet weak var buttonsBgView: UIView!
    override func viewDidLoad() {
        super.viewDidLoad()
        setupView()
        buttonsBgView.backgroundColor = .clear
        view.bringSubview(toFront: buttonsBgView)
    }
}

相关内容

最新更新