1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- //
- // MyTabBarController.swift
- // wyy
- //
- // Created by 施书顺 on 2021/3/5.
- //
-
- import UIKit
-
- class MyTabBarController: UITabBarController {
-
- let sideBar = SideBarView()
- var sideBarWidth: CGFloat = 0
-
- override func viewDidLoad() {
- super.viewDidLoad()
- print(view.subviews)
- addChildViewControllers()
- tabBar.barTintColor = UIColor.white
- tabBar.isTranslucent = false
-
- view.addSubview(sideBar)
- sideBar.layoutIfNeeded()
- sideBar.snp.makeConstraints{ make in
- make.left.equalTo(-sideBar.frame.width)
- }
- }
-
- func addChildViewControllers(){
- setChildViewController(DiscoverViewController(), title: "发现", imageName: "discover", tag: 0)
-
- setChildViewController(PodCastViewController(), title: "博客", imageName: "podcast", tag: 1)
- setChildViewController(MineViewController(), title: "我的", imageName: "mine", tag: 2)
- setChildViewController(KaraokeViewController(), title: "K歌", imageName: "karaoke", tag: 3)
- setChildViewController(CommunityViewController(), title: "云村", imageName: "community", tag: 4)
- }
-
-
- func setChildViewController(_ childController: UIViewController, title: String, imageName: String, tag: Int) {
- let image = UIImage(named: imageName)?.withRenderingMode(.alwaysOriginal)
- childController.tabBarItem = UITabBarItem(title: title, image: image, tag: tag)
- // childController.tabBarItem.imageInsets = UIEdgeInsets(top: 6, left: 0, bottom: 0, right: 0)
- childController.navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .play, target: self, action: #selector(openSideBar))
- let navVc = UINavigationController(rootViewController: childController)
- addChild(navVc)
- }
-
- override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
- let touch: UITouch? = touches.first
- guard let location = touch?.location(in: self.view) else { return }
- print(location)
- if !sideBar.frame.contains(location) {
- closeSideBar()
- } else {
- super.touchesBegan(touches, with: event)
- }
- }
-
- @objc func openSideBar(){
- UIView.animate(withDuration: 0.5, animations: {
- self.sideBar.frame = CGRect(x: 150, y: self.sideBar.frame.origin.y, width: self.sideBar.frame.width, height: self.sideBar.frame.height)
- }, completion: { ok in
- self.selectedViewController?.view.isUserInteractionEnabled = false
- self.tabBar.items?.forEach{$0.isEnabled = false}
- })
- }
-
- func closeSideBar(){
- UIView.animate(withDuration: 0.5, animations: {
- self.sideBar.frame = CGRect(x: -150, y: self.sideBar.frame.origin.y, width: self.sideBar.frame.width, height: self.sideBar.frame.height)
- }, completion: { ok in
- self.selectedViewController?.view.isUserInteractionEnabled = true
- self.tabBar.items?.forEach{$0.isEnabled = true}
- })
- }
-
- }
|