在标签栏控制器中用故事板设置选定的图像

我正在使用故事板,我有一个标签栏控制器与五个选项卡。 在故事板中,我可以设置标签栏项目的图像。 苹果文档build议每个标签栏项目有两个图标 – 一个用于select,一个用于未select状态。

我无法弄清楚如何使用故事板来做到这一点。

您可以使用故事板来设置选定栏的选定图像。 我试过了,它为我工作。 selectUITabbarItem并添加一个运行时属性“selectedImage”,selecttypes为“图像”,并将图像的名称作为其值。

使用故事板设置Tabbar的选定图像

我正在使用XCode 6.0,我的最低部署目标是iOS 8.0。

是的,这不能使用故事板 – 需要编写代码。

UINavigationViewControllerviewDidLoad方法中,我们可以编写下面的代码 –

 UITabBar *tabBar = self.tabBar; UITabBarItem *targetTabBarItem = [[tabbar items] objectAtIndex:0]; // whichever tab-item UIImage *selectedIcon = [UIImage imageNamed:@"name-of-selected-image.png"]; [targetTabBarItem setSelectedImage:selectedIcon]; 

你现在可以在故事板上轻松地做到这一点。 在每个tabviewcontroller,你应该包含一个标签栏项目在层次结构(看起来像一个蓝色的小星星),点击这个和右边的设置应该看起来像下面的图像。 标签栏标题和图像可以在这里更改。

在这里输入图像说明

我认为最简单的方法是设置检查员的图像。 你有一个名为Bar Item – > Image的字段,它在那里你必须设置图像名称。 注意,不要混淆标签栏项目 – >select的图像

在这里输入图像说明

在XCode 8及以上版本中,您只需在Image资源中执行此操作,只需select图像并select“原始图像”即可。 (请检查附加的图像)有乐趣:) 在这里输入图像说明

该图标应设置在相应的视图控制器中。 当你这样做的时候,你可以自由地重新安排故事板主选项卡控制器中的视图控制器的顺序,而不必为每个图标改变代码( objectAtIndex:0 )。

把下面一行放到viewDidLoad方法中:

  if (self.navigationController.viewControllers.count < 2) self.navigationController.tabBarItem.selectedImage = [UIImage imageNamed:@"image-selected.png"]; 

if条件确保button仅针对最上方的视图控制器而改变。 在导航层级中将视图控制器重新用作子视图控制器时,这是必需的。

这是完整的解决schemeselect/未select的图像在Tabbar For XCode> = 8:

  • 转到图像资源 – >select图像
  • select渲染AS:“原始图像”

在这里输入图像说明

  • 之后,去故事板 – >selectTabbar项目
  • 在属性检查器下,如下图所示设置“Selected Image”和“Image”,即:

在这里输入图像说明

在新的Xcode 8中,您可以在Storyboard中进行操作,而不需要像在尖括号的答案中所build议的那样定义运行时属性。

打印屏幕选项卡栏项目

不要忘记,图像应该有这样的大小:

  • @ 1x:约25 x 25
  • @ 2x:约50 x 50
  • @ 3x:大约75 x 75