如何禁用标签栏项目以及如何更改禁用项目的颜色和透明度

Posted

技术标签:

【中文标题】如何禁用标签栏项目以及如何更改禁用项目的颜色和透明度【英文标题】:How to make Tab Bar Item disabled and how to change color and transparency for disabled Item 【发布时间】:2018-06-11 13:31:22 【问题描述】:

有没有办法以编程方式使选定的选项卡栏项看起来被禁用?

我有标签栏,几乎所有项目看起来都处于活动状态(它是删除、编辑、搜索按钮)。但在某些页面上,它的一些项目必须处于非活动状态,向用户显示他无法在此处编辑/删除任何内容。我在想,有没有办法改变所选标签栏项目的视觉外观?还是只使用一组按钮更好?

all active items/buttons in a bar, screenshot

all active items/buttons in the bar, screenshot

UPD:找到禁用项目的设计,但是当我禁用该项目时,我需要更改它的颜色。现在它的颜色与UITabBar.appearance().unselectedItemTintColor 相同,但具有透明度。有没有办法改变禁用项目的颜色和透明度(使其颜色不同且不透明),保持未选中项目的颜色?

【问题讨论】:

【参考方案1】:

对于必需的标签栏项目,尝试为.enabled 属性设置false

Obj-C

.enabled = NO;

斯威夫特

.isEnabled = false

【讨论】:

我正在更改AppDelegate.swift UITabBar.appearance().tintColor = UIColor.red UITabBar.appearance().unselectedItemTintColor = UIColor.black 中标签栏的活动和非活动元素的颜色和然后在我的 UIViewController 我这样做 self.tabBarController?.tabBar.items![1].isEnabled = true self.tabBarController?.tabBar.items![2].isEnabled = false 但颜色没有任何变化 找到了方法,只需要使用Tab Bar的插座。谢谢! UITabBarItem 没有 userInteractionEnabled 属性。 是的,它没有,所以只有 .isEnabled 适合这种情况。【参考方案2】:

或者,您可以使您的tabBar 动态化,而不是禁用/启用,仅显示相关项目。这样,项目总是可以很好地显示,并且不会像屏幕截图中那样有任何间隙。

【讨论】:

我真的很想把所有的物品都放在它的地方,只要改变它的活动和颜色。

以上是关于如何禁用标签栏项目以及如何更改禁用项目的颜色和透明度的主要内容,如果未能解决你的问题,请参考以下文章

模仿基于 QApplication::palette() 的颜色样式行为

如何更改标签栏中未选中项目的颜色?

如何更改 iOS 7 中未选择的标签栏项目的颜色?

如何让 Storybook 使用项目的 CSS 变量

在Android中,如何更改状态栏透明的颜色,如下图所示[重复]

弹出窗口出现时如何阻止标签栏项目变灰