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

时间:2014-01-27 16:26:49

标签: ios xcode5

我正在使用Storyboarding,我有一个带有五个标签的标签栏控制器。在故事板中,我可以设置标签栏项目的图像。 Apple文档建议每个标签栏项目有两个图标 - 一个用于选定状态,另一个用于未选择状态。

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

9 个答案:

答案 0 :(得分:145)

您可以使用故事板设置标签栏的选定图像。我试过,它对我有用。 选择UITabbarItem并添加运行时属性'selectedImage',选择Type作为'Image'并将图像名称作为其值。

Setting selected image of Tabbar using storyboard

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

答案 1 :(得分:19)

以下是Tabbar For XCode中选定/未选中图片的完整解决方案> = 8:

  • 转到图片资源 - >选择图片
  • 选择渲染AS:“原始图像”

enter image description here

  • 之后转到故事板 - >选择Tabbar Item
  • 在“属性检查员”下,设置“选定图像”& “图像”如图所示 在下面的屏幕截图中,就是这样:

enter image description here

答案 2 :(得分:11)

是的,使用故事板无法做到这一点 - 需要编写代码。

UINavigationViewController的{​​{1}}方法中,我们可以编写以下代码 -

viewDidLoad

答案 3 :(得分:11)

在XCode 8及更高版本中,您只需在图像资源中执行此操作,只需选择图像并选择“渲染为”原始图像“即可。 (请查看附图)..有乐趣:)enter image description here

答案 4 :(得分:7)

您现在可以在故事板中轻松完成此操作。在您拥有的每个tabview控制器上,它应该在层次结构中包含一个Tab Bar项(看起来像一个小蓝星),单击此按钮,右侧的设置应如下图所示。标签栏标题&图像可以在这里更改。

enter image description here

答案 5 :(得分:5)

我认为最简单的方法是从Inspector设置图像。 你有一个名为 Bar Item - >的字段图像,在那里你必须设置图像名称。 注意,不要与标签栏项目 - >混淆;选择的图像

enter image description here

答案 6 :(得分:5)

在新的Xcode 8中,您可以在Storyboard中进行操作,而无需像高级答案中所建议的那样定义运行时属性。

Print Screen Tab Bar item

不要忘记图片应该具有以下尺寸:

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

答案 7 :(得分:3)

应在相应的视图控制器中设置图标。执行此操作时,您可以自由重新排列故事板主选项卡控制器中视图控制器的顺序,而无需更改每个图标的代码(objectAtIndex:0)。

将以下行放入viewDidLoad方法:

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

if条件确保仅为最顶层的视图控制器更改按钮。当您将导航层次结构中的视图控制器重用为子视图控制器时,这是必需的。

答案 8 :(得分:3)

SWIFT 3.0 - &gt; 设置标签栏按钮图像的理想方法如下:

首先设置要用于按钮的图像:

    let homeImage = UIImage(named: "TabHome")
    let homeTappedImage = UIImage(named: "TabHomeRed")

然后设置UITabButtonItem类型的按钮:

    let homeButton = UITabBarItem(title: homeText, image: homeImage, selectedImage: homeTappedImage)

    //with this method you set the image when the button is not selected 
    homeButton.image = homeImage?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)


    //with this method you set the image when the button is selected 
    homeButton.selectedImage = homeTappedImage?.withRenderingMode(.alwaysOriginal)