更改标签栏 SWIFT 中第一张图像的 alpha

Posted

技术标签:

【中文标题】更改标签栏 SWIFT 中第一张图像的 alpha【英文标题】:Change alpha of the first image in tabbar SWIFT 【发布时间】:2019-09-14 02:31:01 【问题描述】:

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

我试过了

navigationController.tabBarController.tabBar.compactMap$0 as? UIImageView.first.alpha = 1 这将返回 nil。

【问题讨论】:

【参考方案1】:

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")
    


【讨论】:

接受了这个,因为它精确而清晰,虽然我没有使用它,因为我已经有了这些类,它只是缺少一行代码。不过我解决了。 感谢您的接受,很高兴您能理解!缺少什么? 基本上是你所拥有的highlightIconColor = iconColor.withAlphaComponent(0.4),但我自己的变化。【参考方案2】:

可以使用以下内容:

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

【讨论】:

图像没有成员alpha。此外,我需要 imageView 而不是图像。

以上是关于更改标签栏 SWIFT 中第一张图像的 alpha的主要内容,如果未能解决你的问题,请参考以下文章

Swift:更改标签栏的图像色调颜色?

swift 更改标签栏项目图像和文本颜色iOS

Swift导航栏中图像的动画变化

在 Swift 中更改标签栏徽章大小

swift中白色背景图像上的白色文本

如何在 Swift 的标签栏项目中设置图像?