获取 UITabBarItem 图像的默认未选择 TintColor

Posted

技术标签:

【中文标题】获取 UITabBarItem 图像的默认未选择 TintColor【英文标题】:Getting Default Unselected TintColor of UITabBarItem Image 【发布时间】:2015-06-07 11:55:32 【问题描述】:

我们如何获取未选中的 UITabBarItem Image 的默认颜色?

搜遍了SO只返回改变方法,而我想要的是只得到颜色。

有什么想法吗?

【问题讨论】:

【参考方案1】:

据我记得(我在一年前研究过类似的东西)没有系统 API 可以让非活动控件的“变暗”颜色。然而,我确实对调光进行了逆向工程,使其看起来相对相似。

public extension UIColor 
    public func dimmedColor() -> UIColor 
        var hue = CGFloat(0)
        var brightness = CGFloat(0)
        var saturation = CGFloat(0)
        var alpha = CGFloat(0)

        self.getHue(&hue, saturation: &saturation, brightness: &brightness, alpha: &alpha)

        brightness = max(0.0, brightness - 0.3)

        return UIColor(hue: hue, saturation: 0, brightness: brightness, alpha: alpha)
    

本质上,调光会降低颜色的饱和度并降低​​亮度。这可能会导致黑色,但这可能不是您想要的。

您可以按如下方式使用它,其中tintColor 是从 UIView 或按钮或其他一些着色元素获得的:

let dimmedColor = tintColor.dimmedColor()

【讨论】:

确实有趣的答案,但它创建的版本比实际未选择的颜色更轻 嗯,我想我最终得到的亮度值与他们使用的不完全一样,你可以稍微调整一下,看看你是否更接近了。 我尝试过使用不同的色调,但这不会影响未选择的颜色。它是#929292。我需要一种方法来确定系统颜色,以预测 Apple 是否会更改默认颜色 正如我所说,据我所知,现在有办法做到这一点。您可以尝试捕获颜色,例如通过创建一个控件,让系统对其进行调暗,在图像中捕获它,然后查看颜色值。

以上是关于获取 UITabBarItem 图像的默认未选择 TintColor的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UITabBarItem 上设置不同的未选择图像和文本颜色

获取未选中状态的 uitabbaritem 的颜色?

有没有办法为 UITabBarItem 使用自定义选择的图像?

为自定义 UITabBarItem 着色

UITabBarItem 图像为蓝色且未更改

如何重新创建 UITabBarItem 图像过滤器?