介绍
- 增加了类型为
UITabBarController.MinimizeBehavior的tabBarMinimizeBehavior属性,用于设置 Tabbar 最小化时的行为。
- 增加了类型为
UITabAccessory的bottomAccessory属性,用于在 Tabbar 的上方再添加一个 UITabAccessory(辅助内容)。
- UISearchTab 会从 TabBar 分离出来单独显示。
使用
import UIKit
class TabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
tabs.append(configTab(UIViewController(), title: "微信", imageName: "message", identifier: "chats", badgeValue: "3"))
tabs.append(configTab(UIViewController(), title: "通讯录", imageName: "person.2", identifier: "contacts"))
tabs.append(configTab(UIViewController(), title: "发现", imageName: "safari", identifier: "discover"))
tabs.append(configTab(UIViewController(), title: "我", imageName: "person", identifier: "me"))
tabs.append(configSearchTab(UIViewController(), title: "搜索"))
selectedTab = tabs.last
self.tabBarMinimizeBehavior = .onScrollDown
self.bottomAccessory = UITabAccessory(contentView: UIToolbar())
}
func configTab(_ viewController: UIViewController,
title: String,
imageName: String,
identifier: String,
badgeValue: String? = nil) -> UITab {
let tab = UITab(title: title, image: UIImage(systemName: imageName), identifier: identifier) { tab in
tab.badgeValue = badgeValue
tab.userInfo = identifier
let scrollView = UIScrollView(frame: UIScreen.main.bounds)
scrollView.backgroundColor = .init(red: .random(in: 0 ... 1), green: .random(in: 0 ... 1), blue: .random(in: 0 ... 1), alpha: 1.0)
scrollView.contentSize = CGSize(width: UIScreen.main.bounds.width, height: 1500)
viewController.view.addSubview(scrollView)
return self.configViewController(viewController: viewController, title: title)
}
return tab
}
func configSearchTab(_ viewController: UIViewController, title: String) -> UISearchTab {
let searchTab = UISearchTab { tab in
viewController.view.backgroundColor = .init(red: .random(in: 0 ... 1), green: .random(in: 0 ... 1), blue: .random(in: 0 ... 1), alpha: 1.0)
return self.configViewController(viewController: viewController, title: title)
}
return searchTab
}
func configViewController(viewController: UIViewController, title: String) -> UINavigationController {
let navigationController = UINavigationController(rootViewController: viewController)
viewController.navigationItem.title = title
return navigationController
}
}
