Ios 在带有情节提要的选项卡栏控制器中设置选定图像
我使用故事板,我有一个带有五个选项卡的选项卡栏控制器。在故事板中,我可以为选项卡栏项目设置图像。Apple文档建议每个选项卡栏项目有两个图标——一个用于选中状态,一个用于未选中状态Ios 在带有情节提要的选项卡栏控制器中设置选定图像,ios,xcode5,Ios,Xcode5,我使用故事板,我有一个带有五个选项卡的选项卡栏控制器。在故事板中,我可以为选项卡栏项目设置图像。Apple文档建议每个选项卡栏项目有两个图标——一个用于选中状态,一个用于未选中状态 我不知道如何使用故事板来实现这一点。是的,这不能使用故事板来实现-需要编写代码 在UINavigationViewController的viewDidLoad方法中,我们可以编写以下代码- UITabBar *tabBar = self.tabBar; UITabBarItem *targetTabBarItem
我不知道如何使用故事板来实现这一点。是的,这不能使用故事板来实现-需要编写代码 在
UINavigationViewController
的viewDidLoad
方法中,我们可以编写以下代码-
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];
应在相应的视图控制器中设置图标。执行此操作时,您可以自由地重新排列序列图像板主选项卡控制器中视图控制器的顺序,而无需更改每个图标的代码(
objectAtIndex:0
)
将以下行放入viewDidLoad
方法中:
if (self.navigationController.viewControllers.count < 2)
self.navigationController.tabBarItem.selectedImage = [UIImage imageNamed:@"image-selected.png"];
if(self.navigationController.viewControllers.count<2)
self.navigationController.tabBarItem.selectedImage=[UIImage ImageName:@“image selected.png”];
if
条件确保仅为最顶部的视图控制器更改按钮。当您将导航层次结构中的视图控制器重新用作子视图控制器时,这是必需的。您可以使用序列图像板设置选项卡栏的选定图像。我试过了,它对我有效。
选择UITabbarItem并添加运行时属性“selectedImage”,选择类型为“Image”,并将图像的名称作为其值
我使用的是XCode 6.0,我的最低部署目标是iOS 8.0。您现在可以在情节提要中轻松完成这项任务。在您拥有的每个tabviewcontroller上,它应该在层次结构中包含一个选项卡栏项(看起来像一个小蓝星),单击此项,右侧的设置应该像下图所示。可以在此处更改选项卡栏标题和图像
我认为最简单的方法是从检查器设置图像。 您有一个名为栏项->图像的字段,它在那里您必须设置图像名称。 小心,不要与选项卡栏项目->所选图像混淆
在XCode 8及更高版本中,您只需在图像资源中执行此操作,只需选择图像并选择“渲染为原始图像”。(请查看所附图片)…玩得开心:)在新的Xcode 8中,您可以在故事板中进行操作,而无需定义运行时属性,正如高分答案中所建议的那样 不要忘记,图像应具有以下尺寸:
- @1x:25 x 25左右
- @2x:50 x 50左右
- @3x:大约75 x 75
- 转到图像资源->选择图像
- 选择渲染为:“原始图像”
- 然后转到情节提要->选择选项卡项
- 在属性检查器下,设置“选定图像”和“图像”,如图所示 在下面的截图中,就是这样:
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)
简单回答一个直截了当的问题:你不能,它只是代码(至少目前是这样)
initWithTitle:image:selectedImage:
没有名为UINavigationViewController
的类,如果您的意思是UINavigationController
,它没有名为tabBar
的属性。实际的第一行代码应该是:UITabBar*tabBar=self.navigationController.tabBarController.tabBar
这应该是可以接受的答案,注意“对应的视图控制器”是UINavigationController
的根视图控制器。新版本的XCode在属性检查器中有一个“Selected Image”字段,但它似乎不起作用。谢天谢地,这个答案对我有效。这太棒了,我已经花了几个小时寻找如何解决这个问题。谢谢你提供答案!我也试过。但是,不是为我工作。我不确定原因是什么。在Xcode 7上测试-UITabBarItem的属性检查器中选择的图像字段现在对我来说似乎很好。在iOS 9中进行测试。但不确定它是否仍能在iOS 8设备上工作。编辑:在8.4模拟器中测试-也适用于故事板中的“选定图像”字段。现在,您可以从检查器中使用“栏项->图像”字段,不要使用“选项卡栏项->选定图像”。@DavidNelson您只能填写“图像”部分,必须将“选定图像”部分保留为空才能工作。“选定图像”是什么在这种情况下为什么?为什么“选项卡栏项目”和“栏项目”有单独的部分?如果我选择其中一个系统项,它工作正常——自定义图像失败。我将使用蓝色正方形代替图像。请提供更多关于如何使其工作的详细信息?我使用的是xcode 7.1。可能有一些限制?高度宽度等?嗨!当选择选项卡栏时,我将在自定义图像的位置获得一个彩色正方形。当我使用您的答案中所示的故事板添加选定的图像时,就会发生这种情况。知道为什么会这样吗?我使用的是Xcode 9.2这是一个非常重要的部分,因为简单地将UIImage设置为selectedImage对我没有任何帮助。(我必须注意,我是以编程的方式做的)谢谢@infaz对如何设置默认选项卡感到非常困惑,谢谢你展示了这一点。我很高兴我能提供帮助:d这对我有用。实际上,没有必要将“渲染”设置为“原始图像”,默认值也会这样做。