我使用自定义的TabBar
实现了额外的UITabBarController
。
顶部TabBar
向下滑动,显示更多选项。
问题在于它位于子视图的顶部(阻挡部分)(即主页,搜索等)
我所追求的是TopLayOutGuide
之类的东西,但我知道这是透明的吧。我不确定这是解决这个问题的正确方法。我可以进入每个单独的视图(主页,搜索等)并更改视图,使其自身锚定在顶部TabBar
的底部锚点上,但顶部栏正在移动并可能导致问题。我将顶部TabBar
的高度设置为60。
UITabBarController
如何知道如何调整其子视图(主页,搜索等)的大小,以便它们始终高于TabBar
?我希望能够使用热门TabBar
执行此操作,因此子视图始终低于TabBar
。下面的图片显示了我的意思。
谢谢。
答案 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),
])
}
}