ios - 音乐程序的 TabBarController

标签 ios swift uitabbarcontroller tabbar uitabbaritem

我使用 tabBarController 创建一个音乐程序,我有一些问题,比如如何做到这一点,如 gif 所示

问题:

  1. 如何在您点击 tabBarItem 时,“presentViewController”起作用

  2. 如何让照片不变色变圆,只在第三个tabBarItem

    最好没有库

enter image description here

应该是

enter image description here

我的 TabBarController

override func viewDidLoad() {
     super.viewDidLoad()

    self.delegate = self
    
    // меняет цвет фона tabBar
    self.tabBar.barTintColor = .white
    
    // меняет цвет UITabBarItem and Title
    UITabBar.appearance().tintColor = UIColor(hex: 0x0077fe, alpha: 1)
    
    //меняет цвет background UITabBar
    UITabBar.appearance().barTintColor = UIColor.white
    
    
    // делает фон серым
    for item in self.tabBar.items! {
        if let image = item.image {
            item.image = image.withRenderingMode(.alwaysOriginal)

        }
    }
    
    //показывает и переходит в контроллеры
    let storyBoard = UIStoryboard(name: "Main", bundle:nil)
    let controller1 = storyBoard.instantiateViewController(withIdentifier: "main") as! VCMain
    let controller2 = storyBoard.instantiateViewController(withIdentifier: "search")
    let controller3 = storyBoard.instantiateViewController(withIdentifier: "player")
    let controller4 = storyBoard.instantiateViewController(withIdentifier: "bookmark")
    let controller5 = storyBoard.instantiateViewController(withIdentifier: "menu")
    
    self.setViewControllers([controller1,controller2,controller3,controller4,controller5], animated: true)
    
    // создает навигационный контроллер для контроллеров
    let vc1 = UINavigationController(rootViewController: controller1)
    let vc2 = UINavigationController(rootViewController: controller2)
    let vc3 = UINavigationController(rootViewController: controller3)
    let vc4 = UINavigationController(rootViewController: controller4)
    let vc5 = UINavigationController(rootViewController: controller5)
    
    viewControllers = [vc1, vc2, vc3, vc4, vc5]
    
}

override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
    
    print(item.tag)
    if item.tag == 0{
        if GlobalModals.count != 0 {
            let storyboard = UIStoryboard(name: "Main", bundle: nil)
            let vc = storyboard.instantiateViewController(withIdentifier: "player") as? VCPlayer
            self.present(vc!, animated: true, completion: nil)
        }
    }
}

播放器

override func viewDidLoad() {
    super.viewDidLoad()
  
        let im = Extension.resizeImage(image:GlobalModals[thisSong].ImageView! , targetSize: CGSize.init(width:20, height: 20))
        self.tabBarController?.tabBar.items![2].image = im
    }
 }

最佳答案

TabBarController 没有这些选项,您需要通过子类化来实现它。

您可以使用这个库 Animated Tab Bar用动画达到同样的效果。

关于ios - 音乐程序的 TabBarController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48007200/

相关文章:

android - React Native - 如何使用图像组件中的uri加载本地镜像?

swift - GameScene.sks 文件未被使用

ios - UIImage(文件内容:) returning nil despite file existing in caches directory

ios - 如何仅更改一个 BarButtonItem 的字体大小?

iphone - 另一个 UISplitViewController + UITabBarController 问题

ios - 区域设置敏感的dateFormat字符串

ios - MapKit 动画

iphone - 一个代码库,但 iOS 应用程序的图像和外部数据不同

ios - 从 UITabBarController 中的另一个选项卡在 UIPageViewController 中以编程方式翻页

ios - 在切换选项卡之前让 UITabBar 等待用户输入