0

对于 iPhone 的图形资源,Apple 的 HIG有以下说法:

支持视网膜显示。确保为应用中的所有艺术品和图形提供高分辨率资源。特别是,为 iPhone 6 Plus 提供@3x 资源,为所有其他高分辨率 iOS 设备提供@2x 资源。

以原始纵横比显示照片和图形,缩放比例不要超过 100%。您不希望应用中的艺术作品或图形看起来歪斜或太大。让用户选择是否要放大或缩小图像。

查看这个和其他相关资源,我认为对于一般图形资产,iPhone 6 将采用相同的 640x1136 尺寸的@2x 视网膜图像并将它们放大到它自己的 750x1334 尺寸。它是否正确?

我想知道是否有一种简单的方法(例如,通过一些命名参数,如@2x 或 -568h)来包含 750x1334 大小的单独资产并强制 iPhone 6 设备使用它们,而不是扩大 640x1136 资产。

注意:我知道这可以通过在代码中识别设备来完成,也许定义一个类别,并根据设备指向一个特殊的图像。只是想知道是否有更简单的方法而无需编码。

4

1 回答 1

1

我假设命名约定如下:

视网膜显示屏,> iPhone 4s

image_name@2x~iphone.png

视网膜显示屏 iPhone 6 plus:

image_name@3x~iphone.png

注意:iPhone 6 plus 的屏幕不是原始尺寸的 3 倍。它是 2.34,所以当你创建 1 到 1 个 44x44 实际像素的像素资产时,我的意思是视网膜上是 88x88,然后是 iPhone 6 plus 上是 103x103。但是您应该为不同的 UI/UX 使用额外的屏幕尺寸,而不是仅仅扩大元素的尺寸。

保持现有大小不缩放的方法是在这些图像资源上固定自动布局,确保这些图像受 x1 大小的约束。就像您的图像是 x1 32 像素平方一样:

UIImageView *imageView= [[UIImageView alloc] initWithFrame:CGRectZero];
imageView.translatesAutoresizingMaskIntoConstraints = NO;
imageView.image=[UIImage imageNamed:@"your_image"];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[image(32)]" options:0 metrics:0 views:@{@"image":@(imageView)]];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[image(32)]" options:0 metrics:0 views:@{@"image":@(imageView)]];

并使用您的@2x @3x 图像,问题是如果苹果没有为资源提供@3x 命名图像,它将升级下一个最好的@2x 图像。所以可能没有办法轻松避免这种情况。我有点希望苹果能移除基本的 x1 尺寸,因为手机有不同的分辨率。我更喜欢一对一的像素测量约定。

按照 Apple 的要求工作,使用自动布局作为惯例。上面应该保持图像相同,我稍后会得到一个 iPhone plus,所以会测试它。

于 2014-09-24T09:29:04.127 回答