gpt4 book ai didi

iOS:为什么自定义标签栏项目只显示为灰色轮廓?

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:00:18 27 4
gpt4 key购买 nike

我正在尝试使用自定义 *.png 文件设置我的 UITabBarController 的标签栏图标(一个用于选中,一个用于未选中)。

这些图像都是非隔行扫描的 png 格式,并在 *.imageset 中正确命名(@2x、@3x 等)。

但是标签栏项目只显示为这样的轮廓:

enter image description here

我尝试在 Interface Builder 中设置这些图像,但没有成功。然后我还尝试在 MyTabBarController(扩展 UITabBarController)的“loadView”函数中以编程方式设置它们,如下所示:

UIImage *selectedImage;
UIImage *unselectedImage;

// tab1
selectedImage = [UIImage imageNamed:@"cmdGamesActive"];
unselectedImage = [UIImage imageNamed:@"cmdGamesInactive"];
UITabBarItem *item1 = [self.tabBar.items objectAtIndex:0];
item1 = [item1 initWithTitle:@"Games" image:unselectedImage selectedImage:selectedImage];

// tab2
selectedImage = [UIImage imageNamed:@"cmdFriendsActive"];
unselectedImage = [UIImage imageNamed:@"cmdFriendsInactive"];
UITabBarItem *item2 = [self.tabBar.items objectAtIndex:1];
item2 = [item2 initWithTitle:@"Friends" image:unselectedImage selectedImage:selectedImage];

// tab3
selectedImage = [UIImage imageNamed:@"cmdTrophiesActive"];
unselectedImage = [UIImage imageNamed:@"cmdTrophiesInactive"];
UITabBarItem *item3 = [self.tabBar.items objectAtIndex:2];
item3 = [item3 initWithTitle:@"Trophies" image:unselectedImage selectedImage:selectedImage];

// tab4
selectedImage = [UIImage imageNamed:@"cmdSettingsActive"];
unselectedImage = [UIImage imageNamed:@"cmdSettingsInactive"];
UITabBarItem *item4 = [self.tabBar.items objectAtIndex:3];
item4 = [item4 initWithTitle:@"Settings" image:unselectedImage selectedImage:selectedImage];

...结果相同。

有什么解决这个问题的想法吗?

最佳答案

根据 this answer ,我做了一些额外的事情,在这里可以为您提供答案。我有我的自定义 UITabBarController,它与 StoryBoard 文件中的 UITabBarController 链接。因此,为了在未选择 TabBar 时删除 iOS 提供的自动色调,我最终以这种方式将其删除。图像可以是各种各样的图像,但恰到好处recommended here .开始了:

NSArray *navConArr = self.viewControllers;//self is custom UITabBarController
UINavigationController *naviOne = [navConArr objectAtIndex:0];//I have 3 different tabs, objectAtIndex:0 means the first tab navigation controller
UITabBarItem *naviBtn = naviOne.tabBarItem;
UIImage *image = [[UIImage imageNamed:@"iconNaviOne"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
[naviBtn setSelectedImage:image];
[naviBtn setImage:image];

值得庆幸的是,这就像一个魅力(:

关于iOS:为什么自定义标签栏项目只显示为灰色轮廓?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31805776/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com