iOS: 正在为应用程序准备背景图片

iOS: Preparing background images for applications

大多数 iOS 应用程序都有一个以图像为背景的视图。那里有任何图像大小指南吗?例如,这是一个用 Sketch 设计的 iOS 屏幕:

如您所见,有一张背景图片。现在每个应用程序都应该支持许多 Apple 设备。新的 iOS 10 支持从 iPhone 5 到 iPhone 6s Plus 的所有设备。它们有不同的屏幕尺寸和分辨率。创建 Xcode 资产时,我提供了 3 个不同大小的背景图像 - @1x, @2x, @3x。它们应该是什么尺寸?

查看 the page 文档,有静态启动屏幕图像,您可以从那里了解尺寸。

您可以获得设备屏幕尺寸,使用

CGSize screenSize = [UIScreen mainScreen].bounds.size // (Objective-C)


let screenSize: CGSize = UIScreen.mainScreen().bounds.size // (Swift)

并且在您可以编程方式 select 您想要的图像之后,从捆绑的图像集中。或者使用文档中的知识制作一张大图像以调整大小,并相应地 resize an image。或者...你的选择。

不同"sizes"@2x,@3x是scale 很好的解释。

全尺寸背景图片在设计上存在细微差别。大多数情况下,如果比例方面填充足够好以适应不同的尺寸,则您只需要为最大的设备尺寸进行设计,然后其余的尺寸就可以适应。有时背景的某些部分需要保持可见,或者如果想要为小型设备集保持低内存占用,您需要创建更小的替代方案。

每当您决定资产的设计规模时,您都需要创建@3x、@2x 变体。

关于矢量设计,我还需要指出一件事。如果您的设计仅使用矢量,您可以选择 pdf 矢量导出。故事板可以接受矢量资产,并且在全背景下缩放时效果非常好。

在我看来,您有 2 个选择:

  1. here 中,您将找到 iPhone 的分辨率:

  • 你不需要 @1 image 因为你不支持 iPhone 4 和 4s (iOS 10).
  • @2 适用于 iPhone 5,5c,5S,6 和 6s,所以基本上您可以创建最高分辨率的 @2 图像,即 iPhone 6,此图像效果很好对于 iPhone 5 个家庭。
  • 或者,您可以为每个 iPhone 创建具有分辨率的图像,并使用硬编码逻辑为 每个 phone 设置图像。 即:if iphone5c { setImage("iphone5cImage") } 等等等等..

  1. 最简单的解决方案是创建 1 张分辨率最高的图像。 @3 是 iPhone 6S+ 中最高的,其余的看起来会很棒。不要忘记将图像视图设置为纵横比填充。

此外,不要忘记检查 this 线程:如何处理所有可用 iPhone 分辨率的图像比例?。它将为您提供有关您正在处理的内容的线索。 TL;DR,这是我写的选项。

我在我的应用程序中使用背景图片。为了解决这个问题,我使用了一张分辨率覆盖所有 iPhones 和所有 iPads 除了大的图像。 图片大小为2048x2048 points1024x1024 pixels at @2x以覆盖9.7英寸iPad。

图像压缩为 JPG 以减小尺寸。请注意,我允许它缩放 iPhone 6 Pluse (@3x) 和 12.7 英寸 iPad Pro (@2x),因为质量似乎没有受到影响。 我可以证明较大设备的缩放比例是合理的,因为如果我为 12.7 英寸 iPad Pro 提供图像,它将是 5464x4096 points (@2x) 和 2732x2048 pixels 然后 JPG 压缩将必须如此之高(如果我想保持较小的尺寸),与缩放相比图像质量无论如何都是低的。

如果您需要高质量,请尝试使用 JPG 和 PNG 进行比较,因为对于复杂的图像,PNG 会变得非常大,但质量最好。

你只需要给出@2x和@3x的背景图片,因为@1x的设备早已成为历史的尘埃。

说到@2x 和@3x,您提供给开发人员的图像分辨率应该与使用给定尺寸的最高分辨率 iPhone 相同。

For @2x, that is the iPhone 6, which is 750x1334, and for @3x, the iPhone 6+ which is 1242x2208.

缩小比例应该不是问题,因为所有支持 iOS10 的 iPhone 的宽高比都是相同的 (16:9)。

开发人员注意事项:

The UIImageView will then down-scale the images appropriately,
provided: 

1. you created an image set with the provided @2x and @3x images, 
2. correctly constrainted the UIImageView to the edges of the superview, and
3. selected the Content Mode of the UIImageView as Scale to Fill or Aspect Fill.

如果您仍然遇到同样的问题,那么您可以试试这个。为此,您只需添加一张具有良好分辨率和以下代码的图像..

UIImage *bgImage = [UIImage imageNamed:@"art_background_star@3x.jpg"];
CGSize screenSize = [UIScreen mainScreen].bounds.size;
UIGraphicsBeginImageContextWithOptions(screenSize, NO, 0.f);
[bgImage drawInRect:CGRectMake(0.f, 0.f, screenSize.width, screenSize.height)];
UIImage * resultImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIColor *backgroundColor = [UIColor colorWithPatternImage:resultImage];
self.view.backgroundColor = backgroundColor;

有 3 种 Apple 设备(iPhone 和 iPad),即

1 像素 = 1 点@1x 的普通设备(较旧的 iPhone 和 iPad 设备)

视网膜设备 4 像素(2 x 2) = 1 点@2x (iPhone 5+)

Retina iPhone6 和 iPad 即 9 像素 (3 x 3) = 1 point@3x (iPhone6+)

对于 iOs 10 不支持 iPhone 4s 所以你只需要 @2x 和 @3x 图片。

如上图所示iPhone 6 也支持@2x 缩放,因此@2x 的图像大小为750*1334@3x为1242*2208带图片模式