更改标签栏中第一张图片的 Alpha SWIFT

Change alpha of the first image in tabbar SWIFT

我正在使用 ESTabBarController 构建 TabBar。我需要访问第一个 imageView 来更改它的 alpha,每次它是 selectedItem。顺便说一下,tabbarcontroller 在 UINavigationController 下。我可以得到一些帮助吗?如果需要,我可以提供代码。我试图在 selectedIndex

didSet 上更改 alpha

我试过了

navigationController.tabBarController.tabBar.compactMap{[=15=] as? UIImageView}.first.alpha = 1 这个 returns 一个零。

可以使用以下内容:

tabBarController?.tabBar.items?[i].image.alpha = // Your value

ESTabBarController 实际上是您想要做的事情的完美框架等等,我只是因为您的问题才看了一下!所以,下面的代码肯定会按照您的预期进行。将它放入一个新的单视图应用程序 ViewController.swift 并自己尝试。

您可以通过更改 ExampleBasicContentView 自定义处于选中状态的第二个按钮。如果你想让所有 TabBarItems 的行为相同,添加 ExampleBasicContentView() 作为初始化器的第一个参数,就像我为第二个项目所做的那样。

import UIKit
import ESTabBarController

class ViewController: ESTabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let v1 = ExampleViewController()
        let v2 = ExampleViewController()
        let v3 = ExampleViewController()
        let v4 = ExampleViewController()
        let v5 = ExampleViewController()

        v1.tabBarItem = ESTabBarItem.init(title: "Home", image: UIImage(named: "home"), selectedImage: UIImage(named: "home_1"))
        v2.tabBarItem = ESTabBarItem.init(ExampleBasicContentView(), title: "Find", image: UIImage(named: "find"), selectedImage: UIImage(named: "find_1"))
        v3.tabBarItem = ESTabBarItem.init(title: "Photo", image: UIImage(named: "photo"), selectedImage: UIImage(named: "photo_1"))
        v4.tabBarItem = ESTabBarItem.init(title: "Favor", image: UIImage(named: "favor"), selectedImage: UIImage(named: "favor_1"))
        v5.tabBarItem = ESTabBarItem.init(title: "Me", image: UIImage(named: "me"), selectedImage: UIImage(named: "me_1"))

        tabBar.shadowImage = nil
        viewControllers = [v1, v2, v3, v4, v5]
    }
}


class ExampleBasicContentView: ESTabBarItemContentView {
    override init(frame: CGRect) {
        super.init(frame: frame)
        highlightIconColor = iconColor.withAlphaComponent(0.4)
        highlightTextColor = textColor.withAlphaComponent(0.4)
    }

    public required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}