ios - UITabBarController如何调整其子视图的大小?帮助创建辅助TabBar

时间:2017-06-10 00:02:51

标签: ios swift uitabbarcontroller

我使用自定义的TabBar实现了额外的UITabBarController。 顶部TabBar向下滑动,显示更多选项。

问题在于它位于子视图的顶部(阻挡部分)(即主页,搜索等)

我所追求的是TopLayOutGuide之类的东西,但我知道这是透明的吧。我不确定这是解决这个问题的正确方法。我可以进入每个单独的视图(主页,搜索等)并更改视图,使其自身锚定在顶部TabBar的底部锚点上,但顶部栏正在移动并可能导致问题。我将顶部TabBar的高度设置为60。

UITabBarController如何知道如何调整其子视图(主页,搜索等)的大小,以便它们始终高于TabBar?我希望能够使用热门TabBar执行此操作,因此子视图始终低于TabBar。下面的图片显示了我的意思。

TabBar Blocks View

Views from side

谢谢。

1 个答案:

答案 0 :(得分:0)

我只能创建一个封装视图的视图容器。不是我想要的解决方案,而是一个解决方案。

以下是有人需要的代码。

初始化tabController

func application didFinishLaunchingWithOptions
{
    self.window = UIWindow(frame: UIScreen.main.bounds)

    tabController = TabControls()

    self.window?.rootViewController = self.tabController
    self.window?.makeKeyAndVisible()
}

自定义标签控制器

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(true)

    //ADD TABS
    let tab1 = homeCtrl
    let icon1 = UITabBarItem(title: "", image: UIImage(named: "homeIcon"), tag: 1)
    tab1.tabBarItem = icon1
    tab1.tabBarItem.imageInsets = UIEdgeInsetsMake(0.5, 0, -0.5, 0)
    tab1.title = nil
    let tab2 = searchCtrl
    let icon2 = UITabBarItem(title: "", image: UIImage(named: "tabSearch"), tag: 2)
    tab2.tabBarItem = icon2
    tab2.tabBarItem.imageInsets = UIEdgeInsetsMake(6, 0, -6, 0)
    tab2.title = nil
    let controllers = [tab1,tab2]
    self.viewControllers = controllers

}

自定义控制器封装我想要最小化的视图

class SearchViewContainer : UIViewController{
    var searchCtrl:SearchViewController!

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(true)
        searchCtrl = SearchViewController()
        searchCtrl.view.translatesAutoresizingMaskIntoConstraints = false
        searchCtrl.view.isUserInteractionEnabled = true
        view.addSubview(searchCtrl.view)
        NSLayoutConstraint.activate([
            searchCtrl.view.leadingAnchor.constraint(equalTo: view.leadingAnchor),
            searchCtrl.view.trailingAnchor.constraint(equalTo: view.trailingAnchor),
            searchCtrl.view.bottomAnchor.constraint(equalTo: view.bottomAnchor),
            searchCtrl.view.heightAnchor.constraint(equalTo: view.heightAnchor, constant: -60),
            ])
    }
}