【问题标题】:Do I need to include images for a non-retina iPhone and 6+?我需要为非视网膜 iPhone 和 6+ 包含图像吗?
【发布时间】:2015-03-05 12:30:46
【问题描述】:

在我的应用程序中,我使用大小为 155*155pts 的图像,因此我为其提供了 310*310px 分辨率的图像。我知道我可以使用 image.png image@2x.png 和 image@3x.png 然后 [UIImage imageNamed: image] 来选择适合分辨率的图像。我的问题是我是否真的需要包含尺寸为 155*155px 的较低分辨率版本,它显示的 UIImageView 不会适当地缩放它吗? iphone6+ 的类似问题,如果我不包含@3x 版本,它会只使用@2x 并像标准视网膜屏幕一样清晰地显示它吗?

【问题讨论】:

  • 如果您不支持任何非视网膜 iPad,则可以绕过标准 (@1x) 图像集 - 如果您不想添加 @3x 集,iOS8. 1.1+ 加载@2x 集,在该版本之前,将为高清视网膜屏幕加载@1x 集(但这只是iOS8 早期版本中的一个错误,已修复)。

标签: ios objective-c xcode uiimage


【解决方案1】:

尽管在 SO 讨论这个话题时有很多答案

(谷歌他们)例如How to handle image scale on all the available iPhone resolutions?

建议在您的应用中使用带有@2x 和@3x 的放大图像。您不必创建它们。根据我制作应用程序的经验,在几乎所有应用程序中,我从未使用过多个图像。我创建了一个 UIImage 并将其用于所有手机尺寸。然后我要么使用自动布局,要么自己手动调整 UIImages 的宽度高度。

我这样做是有原因的,假设您的 sample1.png 图像之一是 1MB,那么您将需要创建其中的 3 个。

  • sample1.png
  • sample1@2x.png
  • sample1@3x.png

您只是将二进制文件大小增加了一倍或三倍,这不利于下载。总是有用户运行非视网膜设备,不支持它们会很可惜。您是否只能制作启用视网膜的应用程序,当然可以,Apple 会批准这些应用程序,因为他们将在最新设备上测试您的应用程序,但最好的方法是支持所有设备。

【讨论】:

  • 我知道最好的做法是包含所有图像大小,但对于我的应用程序来说,这会很困难,因为我使用的图像是从服务器下载的,因此无法使用 [UIImage imageNamed: ]。如果我不提供图像的@3x 版本怎么办?我的 UIImageView 大小为 155*155,我提供的图像为 310*310,它会仅将其显示为标准视网膜图形,还是会尝试将其放大到 @3x?
  • 如果你的 UIImageView 设置为 ScaleToFit 那么它会自动调整其中的 310x310 图像。老实说,包括你自己在内的大多数用户都无法区分该 UIImageView 中的 2x 或 3x 图像。在 Xcode 模拟器中尝试,自己看看。
  • 6+ 是每点 3 像素,所以它会放大 UIImageView 的图像吗?
  • 没有任何东西会被放大,因为 iOS 会自动尝试在 UIImageView 的框架内调整它
  • 但 UIImageView 框架固定为 155*155 pts,图像为 310*310px。它不想要一个 465*465px 来适应每点 3 个像素所以会放大图像吗?
【解决方案2】:

这取决于,如果您只支持非视网膜设备,则不必再添加正常的图像尺寸。 6+ 的缩放适用于 @2x 图像,但我想你会看到质量差异

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多