Добавление UIView между tabBar и навигационным представлением в UITabBarController - PullRequest
0 голосов
/ 07 июня 2019

Я работаю над проектом, который использует 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 ]

1 голос
/ 07 июня 2019

Вы можете попробовать так:

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. Или вы добавили:

1 голос
/ 07 июня 2019

Добавьте ваше представление как подпредставление к представлению UITabBarViewController, а не самой панели вкладок. Просто поместите его над панелью вкладок.

Также измените:

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

для установки непосредственно свойства кадра вашего представления. Также вам необходимо выполнить метод viewWillAppear.

...