我正在一个项目中,该项目使用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)
答案 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)
}
}
并确保所有其他视图控制器(将在选项卡内导航)相应地调整框架。
要么必须将所有视图控制器的底部视图向上管理30像素,底部要保留30像素的空白,这样播放器视图后就不会隐藏任何内容。
或者您要添加:
UIView
与添加的播放器视图相同。