在UITabBarController中的tabBar和Navigation视图之间添加UIView

时间:2019-06-07 09:16:52

标签: swift uitabbarcontroller uitabbar

我正在一个项目中,该项目使用UITabBarController显示所有不同的UIViewControllers,但是现在我需要在tabBar和导航视图之间添加一个迷你播放器( ViewControllers也将需要调整大小)。

无论如何,我可以通过重用现有的类来实现这一目标吗?

编辑 我尝试了2种方法:

1-将其添加到视图中。被添加但高于VC

let aView = UIView()
view.addSubview(aView)
aView.backgroundColor = .white
aView.anchor(top: nil, leading: view.leadingAnchor, bottom: tabBar.topAnchor, trailing: view.trailingAnchor, size: .init(width: 0, height: 100))

2-将其添加到tabBar中。听起来可能很愚蠢,但我认为它会起作用。

let viewOverTabBar = UIView(frame: CGRect(x: 0, y: 0, width: 30, height: 30))
viewOverTabBar.backgroundColor = UIColor.black
tabBar.addSubview(viewOverTabBar)

2 个答案:

答案 0 :(得分:1)

将视图作为子视图添加到UITabBarViewController的视图,而不是选项卡栏本身。只需将其放在标签栏上方即可。

也要更改:

aView.anchor(top: nil, leading: view.leadingAnchor, bottom: tabBar.topAnchor, trailing: view.trailingAnchor, size: .init(width: 0, height: 100))

直接设置视图的框架属性。 另外,您还需要在viewWillAppear方法中进行操作。

答案 1 :(得分:1)

您可以尝试这种方式:

class MyTabBarController: UITabBarController {

     override func viewDidLoad() {
         super.viewDidLoad()

        // Do any additional setup after loading the view.
    }

     override func viewWillAppear(_ animated: Bool) {
         super.viewWillAppear(animated)
         self.createSmallPlayer()
    }

    func createSmallPlayer() {

        let viewOverTabBar = UIView(frame: CGRect(x: 0, y: self.tabBar.frame.origin.y-40, width: self.tabBar.frame.size.width, height: 30))
        viewOverTabBar.backgroundColor = UIColor.brown

        //viewOverTabBar.layer.cornerRadius = viewOverTabBar.frame.size.height/2
        viewOverTabBar.layer.masksToBounds = false
        viewOverTabBar.layer.shadowColor = UIColor.black.withAlphaComponent(0.5).cgColor
         viewOverTabBar.layer.shadowRadius = 5.0
        viewOverTabBar.layer.shadowOffset = CGSize(width: 0.0, height: -5.0)
        viewOverTabBar.layer.shadowOpacity = 0.5

        //tabBar.addSubview(viewOverTabBar)
        view.addSubview(viewOverTabBar)
    }
}

Mini Player on Tabar

并确保所有其他视图控制器(将在选项卡内导航)相应地调整框架。

  1. 要么必须将所有视图控制器的底部视图向上管理30像素,底部要保留30像素的空白,这样播放器视图后就不会隐藏任何内容。

  2. 或者您要添加: