UItabBarItem 高亮状态图片

Posted

技术标签:

【中文标题】UItabBarItem 高亮状态图片【英文标题】:UItabBarItem highlight state image 【发布时间】:2009-11-08 22:10:43 【问题描述】:

我希望能够在 UITabBarItem 被选中时更改突出显示的状态图像?是否可以子类化和访问它?还是我需要滚动自己的导航代码?

-> 开始编辑 我之前没有明确说明我在寻找什么。我正在寻找设备添加到 UITabBar 的选定状态/图像的半透明白色覆盖参考。看图! http://solomon71.com/images/UITabBarItem.png

【问题讨论】:

你能在标签被选中或取消选中时交换图标吗? 【参考方案1】:

没有记录或支持的方式来设置您自己的突出显示图像。话虽如此,在 2.2 中,您可以通过继承 UITabBarItem 并实现 -[UIImage *)selectedImage 来做到这一点。

严格来说,您并没有调用私有 API,因为 selectedImage 不是保留的方法名称(实际上是一个相当合理的名称供某人使用)。话虽如此,我确信这不是故意的,它可能会在未来的版本中随时中断。如果这已经在 3.x 中被破坏,我不会感到震惊(我从未发布过任何这样做的东西,只是为客户进行了试验)。

【讨论】:

感谢您提供此信息。在 3.0 模拟器中,这仍然有效。请参阅我编辑的问题。【参考方案2】:

试试这个。

我已经更改了选定的 tabbatitem 图像,例如 -

在标签栏控制器委托方法中

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController


    if([tabBarController selectedIndex] == 0)
    
        [viewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"selected.png"]withFinishedUnselectedImage:[UIImage imageNamed:@"unselect.png"]];
        

通过这个你可以改变你的形象。

或者您可以直接在视图控制器中使用 init(或 ViewWillAppear)方法,例如

        [viewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"selected.png"]withFinishedUnselectedImage:[UIImage imageNamed:@"unselect.png"]];

【讨论】:

以上是关于UItabBarItem 高亮状态图片的主要内容,如果未能解决你的问题,请参考以下文章

UITabBarItem 图片尺寸错误

tvOS 上 UITabBarItem 的选定和聚焦状态

UITabBarItem 图片不显示

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

iPhone XR iOS 12 UITabBarItem 标题重叠在图片上方

UITabBarItem 外观 -setTitleTextAttributes 不断记录“状态 = 1 被解释为 UIControlStateHighlighted”?