UITabBarViewController

UITabBarViewController

请参考此Answer

我正在尝试做同样的事情,但是我想在选项卡栏应用程序中执行此操作,其中在应用程序的所有场景中,“正在播放”栏位于选项卡栏上方。

更新:

我想在屏幕底部(标签栏上方)和不同标签的内容视图下方(而不是上方)有一个视图。另外,我希望能够在某个时候删除此视图,以使主视图占据整个屏幕。

我可以通过编程方式更改nowPlaying视图的约束,使用提到的Answer进行此操作。

最佳答案

使用UITabBarViewController子类可以:

例如:

class DashBoardViewController: UITabBarController {

    let nowPlayingBar:UIView = {
        let view = UIView(frame: .zero)
        view.backgroundColor = .blue
        return view
    }()

    override func viewDidLoad() {
        super.viewDidLoad()
        initView()
    }

    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        nowPlayingBar.frame = tabBar.frame
    }

    override func viewDidAppear(_ animated: Bool) {
        var newSafeArea = UIEdgeInsets()

        // Adjust the safe area to accommodate
        //  the height of the bottom views.
        newSafeArea.bottom += nowPlayingBar.bounds.size.height

        // Adjust the safe area insets of the
        //  embedded child view controller.
        self.childViewControllers.forEach({$0.additionalSafeAreaInsets = newSafeArea})
    }

    private func initView() {
        nowPlayingBar.frame = tabBar.frame
        view.addSubview(nowPlayingBar)
    }
}

关于ios - UITabBarViewController的自定义TabBar布局,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48291081/

10-10 23:08