我在学习构建我的第一个 iPhone 应用程序时很开心,我想知道是否有人会为我指明正确的方向。
我基本上已经为我的标签栏(IOS 7)添加了自定义图标。现在我想为每一个添加一个自定义的选定状态图标。我该怎么做?
谢谢
壳
我在学习构建我的第一个 iPhone 应用程序时很开心,我想知道是否有人会为我指明正确的方向。
我基本上已经为我的标签栏(IOS 7)添加了自定义图标。现在我想为每一个添加一个自定义的选定状态图标。我该怎么做?
谢谢
壳
从 Xcode 6 开始,您可以在 Interface Builder 中默认执行此操作。不需要像以前一样的任何自定义子类或类别。
这是基于@MrAlek解决方案的快速解决方案,创建一个自定义的UITabBarItem
import UIKit
@IBDesignable
class YourTabBarItem: UITabBarItem {
@IBInspectable var selectedImageName:String!{
didSet{
selectedImage = UIImage(named: selectedImageName)
}
}
}
在界面生成器中,更改选项卡栏项目的类,您将看到 Selected Image Name 属性,只需在此处指定您选择的图像名称。我认为@IBInspectable 正在使用运行时属性。
在 iOS7 上你应该设置selectedImage
tabBarItem.selectedImage = selectedImage;
tabBarItem.image = unselectedImage;
请记住,这selectedImage
在 iOS6 中不可用。如果您必须支持 iOS6,
请使用。– setFinishedSelectedImage:withFinishedUnselectedImage:
在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"]];
像下面这样使用它可以解决 iOS7 中的图像问题:
[self.navigationController.tabBarItem setSelectedImage:[[UIImage imageNamed:@"MySelectedIcon.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];
您可以使用子方法来初始化 tabBarItem。
-(instancetype)initWithTitle:(NSString *)title image:(UIImage *)image selectedImage:(UIImage *)selectedImage