【问题标题】:Navigation Bar Background Image too big导航栏背景图片太大
【发布时间】:2012-07-20 09:50:53
【问题描述】:

我正在尝试在我的设置方法中使用setBackgroundImage: forBarMetrics: 更改导航栏的背景图像。

问题是图像不适合栏,看起来图像至少被拉伸到原始尺寸的两倍...

图片尺寸为320 x 44...

我尝试将图像重命名为 @2x,但它并没有改变任何东西...

我尝试将此图像分配给navigationItem.titleView,但视图在边缘被截断...

有没有人提示如何设置图像以使其不会被拉伸?

UINavigationBar *naviBar = [self.navigationController navigationBar];
UIImage *img = [UIImage imageNamed:@"NavBar02@2x.png"];
[naviBar setBackgroundImage:img forBarMetrics:UIBarMetricsDefault];

提前致谢

【问题讨论】:

  • 代码已添加,请看一下谢谢!
  • 不!不要将图像重命名为“@2x”。永远不要这样做,您将始终使用非视网膜版本的图像作为 UI 元素。如果设备有视网膜屏幕,“@2x”是供 iOS 自动使用的,而不是低分辨率图像。

标签: ios xcode uinavigationcontroller uinavigationbar


【解决方案1】:

好吧,我终于明白了!

问题:导航栏采用 320 x 44 像素的图像,因为 iPhone 中的每个点都是 2 像素,如果您使用导航栏的点,您使用的图像将看起来像拉伸 4 倍(y 为 2x, x 坐标为 2x)。

要解决这个问题,只需将文件扩展名 @2x 添加到您的图像文件(例如 yourImgName@2x.png)。在拖入 Xcode 之前,您必须重命名它!如果您尝试在 Xcode 中重命名它,它将无法正常工作。

ps。不要在你的代码中包含@2x,只是像这样的文件名 [UIImage imageNamed:@"yourImgName.png"]

希望对你有帮助

【讨论】:

  • 只有视网膜 iPhone 每个点需要 2 个像素。这就是为什么你需要准备两套资产。
  • 非常感谢分享。我的问题是我在 xCode 中重命名了 @2x。而且 iOS 不会将我的图像比例设置为 2。谢谢
  • 那么大家对只提供一个视网膜显示版本并允许它按比例缩小以适应非视网膜的想法是什么?我已经尝试过了,视网膜图像在非视网膜手机中看起来很好。
  • 如果您使用 [UIImage imageWithData:data] 创建此图像,因此该图像永远没有任何文件名,会发生什么情况?您如何指定普通图像与@2x 图像?
【解决方案2】:

你应该有两个图像。一种是 320x44 像素,名称为 NavBar02.png。另一个是 640x88 像素,名称为 NavBar02@2x.png。

iOS 会根据设备的分辨率选择合适的图片。

【讨论】:

    【解决方案3】:

    对于所有图标,Apple 推荐以下内容。

    要调整大小,请在预览中打开您的图像。去

    工具 -> 调整大小。

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多