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 个选择:
- 在 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 张分辨率最高的图像。 @3 是 iPhone 6S+ 中最高的,其余的看起来会很棒。不要忘记将图像视图设置为纵横比填充。
此外,不要忘记检查 this 线程:如何处理所有可用 iPhone 分辨率的图像比例?。它将为您提供有关您正在处理的内容的线索。 TL;DR,这是我写的选项。
我在我的应用程序中使用背景图片。为了解决这个问题,我使用了一张分辨率覆盖所有 iPhones 和所有 iPads 除了大的图像。
图片大小为2048x2048 points
或1024x1024 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带图片模式
大多数 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 个选择:
- 在 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 张分辨率最高的图像。 @3 是 iPhone 6S+ 中最高的,其余的看起来会很棒。不要忘记将图像视图设置为纵横比填充。
此外,不要忘记检查 this 线程:如何处理所有可用 iPhone 分辨率的图像比例?。它将为您提供有关您正在处理的内容的线索。 TL;DR,这是我写的选项。
我在我的应用程序中使用背景图片。为了解决这个问题,我使用了一张分辨率覆盖所有 iPhones 和所有 iPads 除了大的图像。
图片大小为2048x2048 points
或1024x1024 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 is750x1334
, and for@3x
, the iPhone 6+ which is1242x2208
.
缩小比例应该不是问题,因为所有支持 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带图片模式