请查看以下屏幕截图及其对tabbar的规范。
因为我在过去的三天里被困住了。
任何帮助,将不胜感激。
把代码放在AppDelegate
didFinishLaunching
方法中: -
let tabBarController = self.window!.rootViewController as! UITabBarController
let tabBar = tabBarController.tabBar
DispatchQueue.main.async {
tabBar.selectionIndicatorImage = UIImage().createSelectionIndicatorFill(fillColor:.red, lineColor:.blue,size: CGSize(width:tabBar.frame.width/CGFloat(tabBar.items!.count), height:tabBar.frame.height), lineWidth: 1.0)
tabBar.unselectedItemTintColor = customColor
}
并扩大UIImage
extension UIImage {
func createSelectionIndicatorFill(fillColor: UIColor,lineColor:UIColor,size: CGSize, lineWidth: CGFloat) -> UIImage {
UIGraphicsBeginImageContextWithOptions(size, false, 0)
fillColor.setFill()
UIRectFill(CGRect(x:0, y:0, width:size.width, height:size.height - lineWidth))
lineColor.setFill()
UIRectFill(CGRect(x:0, y:size.height - lineWidth, width:size.width, height:lineWidth))
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image!
}
您可以通过创建自定义选项卡栏并添加选项卡的每个方面视图控制器来实现它,以使用这些步骤将其添加为子vc。
self.add(asChildViewController: firstViewController)
//MARK: - Add Child View Controller
private func add(asChildViewController viewController: UIViewController) {
// Add Child View Controller
addChildViewController(viewController)
// Add Child View as Subview
view.addSubview(viewController.view)
// Configure Child View
viewController.view.frame = view.bounds
viewController.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
// Notify Child View Controller
viewController.didMove(toParentViewController: self)
}
//MARK: - Remove Child View Controller
private func remove(asChildViewController viewController: UIViewController) {
// Notify Child View Controller
viewController.willMove(toParentViewController: nil)
// Remove Child View From Superview
viewController.view.removeFromSuperview()
// Notify Child View Controller
viewController.removeFromParentViewController()
}