Swift 在UITabBarController中的选项卡和导航视图之间添加UIView
我正在处理一个项目,该项目使用Swift 在UITabBarController中的选项卡和导航视图之间添加UIView,swift,uitabbarcontroller,uitabbar,Swift,Uitabbarcontroller,Uitabbar,我正在处理一个项目,该项目使用uitabarcontroller显示所有不同的UIViewControllers,但现在我需要在选项卡栏和导航视图之间添加一个迷你播放器(ViewControllers也必须调整大小) 我是否可以通过重用现有类来实现这一点 编辑 我尝试了两种方法: 1-将其添加到视图中。已添加但高于VCs let aView = UIView() view.addSubview(aView) aView.backgroundColor = .white aView.anchor(
uitabarcontroller
显示所有不同的UIViewControllers
,但现在我需要在选项卡栏和导航视图之间添加一个迷你播放器(ViewControllers
也必须调整大小)
我是否可以通过重用现有类来实现这一点
编辑
我尝试了两种方法:
1-将其添加到视图中。已添加但高于VCs
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-将其添加到选项卡栏中。这听起来可能很傻,但我认为它会起作用
let viewOverTabBar = UIView(frame: CGRect(x: 0, y: 0, width: 30, height: 30))
viewOverTabBar.backgroundColor = UIColor.black
tabBar.addSubview(viewOverTabBar)
将视图作为子视图添加到UITabBarViewController的视图,而不是选项卡栏本身。只需将其放置在选项卡栏上方
也改变了:
aView.anchor(top: nil, leading: view.leadingAnchor, bottom: tabBar.topAnchor, trailing: view.trailingAnchor, size: .init(width: 0, height: 100))
直接设置视图的框架属性。
此外,您还需要在视图中将显示方法中执行此操作。将视图作为子视图添加到UITabBarViewController的视图,而不是选项卡栏本身。只需将其放置在选项卡栏上方
也改变了:
aView.anchor(top: nil, leading: view.leadingAnchor, bottom: tabBar.topAnchor, trailing: view.trailingAnchor, size: .init(width: 0, height: 100))
直接设置视图的框架属性。
此外,您还需要在“视图中显示”方法中执行操作。您可以尝试以下方法:
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个像素的空白,这样就不会有任何内容隐藏在您的播放器视图后面
或者您已经添加了:
- 容器视图
ui视图
与添加的播放器视图相同
- 在这种情况下,您必须添加视图控制器的视图,其中导航控制器作为子视图(请参阅:)李>
您可以这样尝试:
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个像素的空白,这样就不会有任何内容隐藏在您的播放器视图后面
或者您已经添加了:
- 容器视图
ui视图
与添加的播放器视图相同
- 在这种情况下,您必须添加视图控制器的视图,其中导航控制器作为子视图(请参阅:)李>
你试了什么?@ShauketSheikh有用吗?你试了什么?@ShauketSheikh有用吗?是的。您只需要为嵌入式VC配置偏移量。否则,您需要将视图作为子视图添加到嵌入式VC。如何更改偏移量?我的意思是您需要偏移嵌入式VC的内容。只需通过嵌入式VC中的约束即可。是的。您只需要为嵌入式VC配置偏移量。否则,您需要将视图作为子视图添加到嵌入式VC。如何更改偏移量?我的意思是您需要偏移嵌入式VC的内容。只需通过嵌入式VC内部的约束。