如何禁用标签栏项目以及如何更改禁用项目的颜色和透明度
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() 的颜色样式行为