IOS 7中标签栏图标的选定状态

Posted

技术标签:

【中文标题】IOS 7中标签栏图标的选定状态【英文标题】:Selected state of tab bar icon in IOS 7 【发布时间】:2013-10-17 12:03:46 【问题描述】:

我在学习构建我的第一个 iPhone 应用程序时很开心,我想知道是否有人会为我指明正确的方向。

我基本上已经为我的标签栏添加了自定义图标(ios 7)。现在我想为其中的每一个添加一个自定义的选定状态图标。我该怎么做?

谢谢

【问题讨论】:

您想在顶栏或下栏添加图标吗?你可以使用 UIBarButtonItem。 从 Xcode 6 开始,您可以在 Interface Builder 中默认执行此操作。无需任何自定义解决方案。 【参考方案1】:

从 Xcode 6 开始,您可以在 Interface Builder 中默认执行此操作。不需要像以前那样自定义子类或类别。

【讨论】:

用户定义的运行时属性的使用很简洁。 见鬼,这是一个很棒的解决方案。 为什么没有选择这个答案?这真是太棒了! 删除了我的答案,因为 Xcode 6 不再需要它【参考方案2】:

这里是基于@MrAlek解决方案的swift解决方案,创建自定义UITabBarItem

import UIKit

@IBDesignable
class YourTabBarItem: UITabBarItem 

    @IBInspectable var selectedImageName:String!
        didSet
            selectedImage = UIImage(named: selectedImageName)
        
    

在界面生成器中,更改标签栏项目的类,您将看到 Selected Image Name 属性,只需在此处指定您选择的图像名称。我认为@IBInspectable 正在使用运行时属性。

【讨论】:

【参考方案3】:

在 iOS7 上你应该设置selectedImage

tabBarItem.selectedImage = selectedImage;
tabBarItem.image = unselectedImage;

请记住,selectedImage 在 iOS6 中不可用。 如果您必须支持 iOS6,请使用– setFinishedSelectedImage:withFinishedUnselectedImage:

【讨论】:

【参考方案4】:

在https://***.com/a/20007782/1755055查看我更完整的答案

您的选项卡通常会有一个导航控制器堆栈,因此您需要以下内容

- (void)viewDidLoad

    [super viewDidLoad];

...

    [self.navigationController.tabBarItem setSelectedImage:[UIImage imageNamed:@"MySelectedIcon.png"]];


如果标签中只有一个视图控制器而没有 UINavigationController 包装器,则可以使用

[self.tabBarItem setSelectedImage:[UIImage imageNamed:@"MySelectedIcon.png"]];

【讨论】:

【参考方案5】:

像下面这样使用它可以解决iOS7中的图像问题:

[self.navigationController.tabBarItem setSelectedImage:[[UIImage imageNamed:@"MySelectedIcon.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];

【讨论】:

【参考方案6】:

您可以使用子方法来初始化 tabBarItem。

-(instancetype)initWithTitle:(NSString *)title image:(UIImage *)image selectedImage:(UIImage *)selectedImage

【讨论】:

以上是关于IOS 7中标签栏图标的选定状态的主要内容,如果未能解决你的问题,请参考以下文章

取消选择或取消选择iOS 5中标签栏中的所有标签

swiftUI中标签栏的圆角?

在更多标签栏控制器IOS8中以选定状态显示的图标

更改标签栏中活动整个部分的颜色 - iOS 7

如何更改选中和未选中的标签栏图像颜色

iOS 7.1 打破 UITabbar 图像选定状态