在 iOS 7 中无法显示 UITabBarItem.image 正确大小

Posted

技术标签:

【中文标题】在 iOS 7 中无法显示 UITabBarItem.image 正确大小【英文标题】:Trouble showing UITabBarItem.image correct size in iOS 7 【发布时间】:2014-03-04 11:23:22 【问题描述】:

我以编程方式创建了一个 UITabBarcontroller,如下所示:

UITabBarController *tbc = [[UITabBarController alloc] init];   
[tbc setViewControllers:[NSArray arrayWithObjects:vc1,vc2,vc3,vc4,vc5,nil]];

这工作正常。对于每个 UIViewControllers,我想将它们的 tabbaritem.image 设置为指定的图像,所以我这样做:

UITabBarItem *tbi1 = [[UITabBarItem alloc] initWithTitle:@"Search" image:
    [UIImage imageNamed:@"tab_bar_search_50_50.png"] tag:0];
vc1.tabBarItem = tbi1;

我也试过了

vc1.tabBarItem.image = [UIImage imageNamed:@"tab_bar_search_50_50.png"];

 UITabBarItem *tbi1 = [[UITabBarItem alloc] initWithTitle:@"Search" image:
      [UIImage imageNamed:@"tab_bar_search_50_50.png"] selectedImage:
      [UIImage imageNamed:@"tab_bar_search_50_50.png"]];

图片尺寸为50x50,因为根据apple->https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/IconMatrix.html#//apple_ref/doc/uid/TP40006556-CH27-SW1

一个大小为“大约 50 x 50(最大:96 x 64)就可以了”的标签栏图标。然而,当我在模拟器和设备(两个视网膜屏幕)上运行它时,图像太大并且挂在标签栏的顶部。

我什至尝试将 @2x 作为后缀添加到文件名中,但这不起作用,但我认为由于该应用程序仅针对 ios7 构建,因此不再需要这些后缀?

我猜这个问题要么是 iOS7 中的错误,要么是图像大小的问题,但我在文档中读到,如果图像太大,它会被剪裁到一定的范围?

【问题讨论】:

【参考方案1】:

我相信我已经解决了我的问题。问题是当我添加@2x 后缀时,我还将它包含在 UIImage 的命名中:

[UIImage imageNamed @"image@2x.png"];

但这必须是:

[UIImage imageNamed @"image.png"];

【讨论】:

Tyler Durden 你的意思是说图像命名不应该有后缀@2x,但应该是视网膜或非视网膜图像的大小。

以上是关于在 iOS 7 中无法显示 UITabBarItem.image 正确大小的主要内容,如果未能解决你的问题,请参考以下文章

ios 7 TableViewController 单元格无法完全显示

如何在 ios 7 和 ios6 中显示启动画面

iOS 7 - 如何在表格视图中显示日期选择器?

MKMapview 在模拟器的 iOS-7.0 中不显示地图

在带有 Xamarin.iOS 的 iOS 7 上的 ViewDidAppear 方法中显示阻止的 UIAlertView 不起作用

UITableView 在 iOS 7.1 上无法正确重新加载