7

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

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

谢谢

4

6 回答 6

19

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

于 2013-12-22T20:31:35.343 回答
4

这是基于@MrAlek解决方案的快速解决方案,创建一个自定义的UITabBarItem

import UIKit

@IBDesignable
class YourTabBarItem: UITabBarItem {

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

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

在此处输入图像描述

于 2014-08-07T10:59:14.787 回答
4

在 iOS7 上你应该设置selectedImage

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

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

于 2013-10-17T12:25:41.547 回答
2

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

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

- (void)viewDidLoad
{
    [super viewDidLoad];

...

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

}

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

[self.tabBarItem setSelectedImage:[UIImage imageNamed:@"MySelectedIcon.png"]];
于 2013-11-15T18:22:54.887 回答
1

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

[self.navigationController.tabBarItem setSelectedImage:[[UIImage imageNamed:@"MySelectedIcon.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];
于 2013-12-17T13:03:08.010 回答
-1

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

-(instancetype)initWithTitle:(NSString *)title image:(UIImage *)image selectedImage:(UIImage *)selectedImage
于 2014-06-27T07:54:50.963 回答