我目前正在 Swift 4/Xcode 10 中制作一个单一 View 应用程序,其中有一个动画背景和屏幕上的 6 个按钮,每个按钮链接到一个单独的 ViewController。当我运行该应用程序时,动画背景似乎移到了前层并挡住了所有按钮。如何使按钮显示在背景前面?
问题是,我没有以编程方式创建按钮,而是从界面构建器的对象库中拖放它们。这就是为什么当我尝试发布 here 的解决方案时和 here ,它没有用,因为我不知道是否有任何引用任何按钮的实际代码。例如,当我尝试
view.bringSubview(toFront: theButton)
我不确定用什么来代替按钮,甚至不知道把那段代码放在哪里。
下面是我的“主屏幕” View Controller 上的代码。我最紧迫的问题是我应该在哪里插入代码以将按钮移到前面或将背景移到后面。
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)
}
}
Here是我的 Main.storyboard 的样子。如果有帮助,目前的层次结构是:
View > 视频 View > View > 按钮按钮按钮按钮按钮按钮按钮
最佳答案
第一个 View -> 视频 View -> buttonsBgView -> 按钮按钮按钮按钮按钮按钮按钮
不要将 buttonsBgView 添加为视频 View 的 subview 。 Video View 和 buttonsBgView 应该是 1st View 的 subview 。
第一个 View -> 视频 View
第一个 View -> buttonsBgView -> 按钮按钮按钮按钮按钮按钮按钮
为 buttonsBgView 创建一个 IBOutlet,并将该 View 置于最前面
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)
}
}
关于ios - 如何阻止背景阻止 Swift 4 中的其他元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56204639/