iOS 自定义标签栏项目比标签栏高

Posted

技术标签:

【中文标题】iOS 自定义标签栏项目比标签栏高【英文标题】:iOS Custom Tab Bar Items Taller Than Tab Bar 【发布时间】:2012-12-10 17:42:18 【问题描述】:

好的,我正在尝试创建一个自定义标签栏。我已经阅读了一百篇教程并下载了一半的示例代码项目,但这个问题似乎仍然存在于所有教程中。

我真的不想要一个自定义背景,我真正想要的是让按钮占据整个区域,这样就不会显示任何背景。为什么当使用大小为 49 像素(Retina 为 98 像素)的图像作为背景和按钮时……标签栏本身被放大了,而 Apple 添加的丑陋的发光是可见的?

这是我使用的代码(在 Stack 上找到):

UIImage *selectedImage0 = [UIImage imageNamed:@"transactions_tab_btn_active"];
UIImage *unselectedImage0 = [UIImage imageNamed:@"transactions_tab_btn"];

UIImage *selectedImage1 = [UIImage imageNamed:@"bills_tab_btn_active"];
UIImage *unselectedImage1 = [UIImage imageNamed:@"bills_tab_btn"];

UIImage *selectedImage2 = [UIImage imageNamed:@"messages_tab_btn_active"];
UIImage *unselectedImage2 = [UIImage imageNamed:@"messages_tab_btn"];

UIImage *selectedImage3 = [UIImage imageNamed:@"reports_tab_btn_active"];
UIImage *unselectedImage3 = [UIImage imageNamed:@"reports_tab_btn"];

UITabBar *tabBar = self.tabBarController.tabBar;
UITabBarItem *item0 = [tabBar.items objectAtIndex:0];
UITabBarItem *item1 = [tabBar.items objectAtIndex:1];
UITabBarItem *item2 = [tabBar.items objectAtIndex:2];
UITabBarItem *item3 = [tabBar.items objectAtIndex:3];

UIImageView *tabBarImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"tab_bar"]];
if ([[[UIDevice currentDevice] systemVersion] floatValue] < 5)  
    [tabBar insertSubview:tabBarImageView atIndex:0];
else
    [tabBar insertSubview:tabBarImageView atIndex:1];


[item0 setFinishedSelectedImage:selectedImage0 withFinishedUnselectedImage:unselectedImage0];
[item1 setFinishedSelectedImage:selectedImage1 withFinishedUnselectedImage:unselectedImage1];
[item2 setFinishedSelectedImage:selectedImage2 withFinishedUnselectedImage:unselectedImage2];
[item3 setFinishedSelectedImage:selectedImage3 withFinishedUnselectedImage:unselectedImage3];

再次,我可以删除该背景图像,因为它对我没有用,但没有它,标签栏的默认黑色背景是可见的。都不好。请帮忙。

【问题讨论】:

【参考方案1】:

好吧,我可以帮助你发光。要隐藏它,只需创建一个透明图像并使用它。

UIImage* image = [UIImage imageNamed:@"transparent.png"];
[[UITabBar appearance] setSelectionIndicatorImage:image];

【讨论】:

以上是关于iOS 自定义标签栏项目比标签栏高的主要内容,如果未能解决你的问题,请参考以下文章

iOS 标签栏项自定义图像

如何在ios中更改标签栏项目的背景图像?

iOS 8:在界面构建器中设置的自定义标签栏项目的选定图像不起作用

自定义标签栏不显示导航栏

自定义标签栏和标签栏项目

自定义标签栏应用 ipad 隐藏标签栏