我当前正在在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)
}
}