gpt4 book ai didi

ios - 拥有@2x 图像 Assets 而没有@1x Assets

转载 作者:行者123 更新时间:2023-11-29 01:30:48 24 4
gpt4 key购买 nike

我正在开发一款包含大量图形的应用程序。该应用程序针对装有 iOS 7+ 的 iPhone,因此所有支持它的设备都具有视网膜显示屏。我只添加了@2x 和@3x 图形,因为永远不会使用@1x 图形,而且我不希望 bundle 的大小增长得超过它必须增长的范围。

我以编程方式加载大部分图像:

[self.imageView setImage:[UIImage imageNamed:@"ButtonOn"]];

这应该为 @2x 显示器加载 ButtonOn@2x.jpg 并为 iPhone 6 plus 加载 ButtonOn@3x.jpg

但是,我注意到了这种行为:

  • iPhone 6 Plus 会加载 @3x 图像。
  • 但其他 iPhone – 4、4s、5s 和 6,不加载 @2x。
  • 我可以使用图形全名强制它加载@2x 图像,例如:[UIImage imageNamed:@"ButtonOn@2x.jpg"],但这违背了目的命名约定,这也迫使我自己检测屏幕密度。

有没有办法让@2x 和@3x 图像不带@1x 图像?

更新:问题与屏幕密度无关。问题是,因为我使用的是 JPG 图形而不是 PNG 图形,所以 Xcode 无法找到它们,除非我使用文件的全名扩展名。也许这是一个错误。

最佳答案

省略 1x 图像并没有错,事实上,对于仅限 iPhone 的应用程序通常这样做(因为没有单一分辨率的 iPhone 设备可以运行该系统)。问题是你的代码。特别是,这一行是错误的:

[self.imageView setImage:[UIImage imageNamed:@"ButtonOn"]];

你有两个选择:

  • 这是一个.jpg文件,所以这样说:

    [self.imageView setImage:[UIImage imageNamed:@"ButtonOn.jpg"]];
  • 更好的是,保持原样,并使用 Assets 目录而不是具有有趣的 @2x 名称的单个文件。

编辑:根据您的评论和问题中的详细信息,我不得不说您对自己是否在使用 Assets 目录深感困惑。你说你是,但在那种情况下,说 [UIImage imageNamed:@"ButtonOn@2x.jpg"] 不会起作用——而你说它确实起作用。很明显,这个文件仍然位于应用程序包的顶层。那是你问题的一部分。您需要从应用程序包中删除这些图像文件并完全依赖 Assets 目录。

关于ios - 拥有@2x 图像 Assets 而没有@1x Assets ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33481558/

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