gpt4 book ai didi

ios - UINavigationBar 的背景图像在 iPhone 5 上的方向更改后大小不正确

转载 作者:可可西里 更新时间:2023-11-01 03:30:49 28 4
gpt4 key购买 nike

希望是一个小问题的长标题。

我有一个带有自定义背景图像的 UINavigationBar。我的应用程序将支持横向和纵向。 Landscape 在 3 英寸视网膜屏幕和非视网膜屏幕的模拟器中运行良好。然而,在视网膜 4 英寸屏幕上,背景图像在横向模式下显示为两倍大小。

这是来 self 的自定义导航 Controller 的初始化方法的相关代码片段:

[self.navigationBar setBackgroundImage:[UIImage imageNamed:@"navbar-bg.png"] forBarMetrics:UIBarMetricsDefault];        
if (IS_IPHONE_5)
{
[self.navigationBar setBackgroundImage:[UIImage imageNamed:@"navbar-bg-landscape-iphone5.png"] forBarMetrics:UIBarMetricsLandscapePhone];
}
else
{
[self.navigationBar setBackgroundImage:[UIImage imageNamed:@"navbar-bg-landscape.png"] forBarMetrics:UIBarMetricsLandscapePhone];
}

IS_IPHONE_5 是一个宏,定义为:

#define WIDTH_IPHONE_5 568
#define IS_IPHONE_5 ([[UIScreen mainScreen] bounds].size.height == WIDTH_IPHONE_5)

这里有 2 个屏幕片段可以更清楚地解释事情。当应用程序以纵向模式打开时,一切正常:

portrait

当切换到横向模式时,一切都崩溃了:

landscape

背景图像横向版本的图像尺寸(以像素为单位,宽度 x 高度)为:

  • navbar-bg-landscape.png: 480x44
  • navbar-bg-landscape@2x.png: 960x88
  • navbar-bg-landscape-iphone5.png: 1136x88

或者这可能只是模拟器的问题? (我现在没有真正的 iPhone 5)

最佳答案

我相信你的 navbar-bg-landscape-iphone5.png 实际上应该被称为 navbar-bg-landscape-iphone5@2x.png 并且你应该继续在您的代码中将其引用为 navbar-bg-landscape-iphone5.png。因为 iPhone 5 有视网膜显示屏,iOS 会寻找 @2x 版本并使用它。如果找不到,它将使用您提到的版本,然后将其放大 2 倍。为避免 iOS 放大 2 倍,请为其提供 @2x 版本。

关于ios - UINavigationBar 的背景图像在 iPhone 5 上的方向更改后大小不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12808519/

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