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

标签 ios swift button background

我目前正在 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/

相关文章:

ios - 在表加载时配置自定义单元格的聪明方法?

javascript - 如何重新编译 Ionic 1.x 应用程序?

ios - Flutter (iOS) 数字键盘小数点分隔符

android - 如何检测 Android 设备是否没有物理或屏幕按钮?

wpf - 带有 Prism 的 Wpf 中模块之间的 ApplicationCommands 问题

jquery效果-向下/向上滑动隐藏div,隐藏当前显示的隐藏div

iphone - 4 英寸视网膜 iPhone 模拟器中页眉和页脚的剩余空间

swift - 如果 NSDictionary 是引用类型那么为什么它不将自身传播到子类?

ios - 从导航 Controller 中弹出多个 Controller 为零?

arrays - 如何在 Swift 中获取对象的属性数组