Kur*_*rtz 31 iphone xcode ios asset-catalog
我正在尝试为新的6和6+设备更新我的应用.
我为新的iPhone尺寸(6和6+)添加了启动图像.资产目录中有6和6+的条目.没问题.
我还有一些我需要添加的全屏视图叠加图像.我已经在@ 2x(iPhone 4s)和R4(iPhone 5 5s 5c)中有这些图像.我已经以新的分辨率大小创建了图像,但我不确定如何将它们添加到图像集中.
当我进入资产目录时,我可以在图像集中选择特定于设备的,我会看到iPhone,retina-4和iPad的条目.拖曳井有1x,2x,Retina 4 2x和3x.
我的问题 - 我应该在哪里放置iPhone 6的图像?显然3x是6加.我不知道视网膜4井如何用于iPhone 5和iPhone 6,因为屏幕尺寸不同.
我错过了什么?
我很确定这是Xcode 6中的一个错误.当您从资产目录图像集加载图像时,无论您是缩放还是标准显示模式,您都将获得iPhone 6+的3x条目.对于iPhone 6,您将始终在两种模式下获得2x条目.对于iPhone 4s,您还将获得2x条目.
所有这些设备都具有不同的缩放比例和宽高比,因此这对于像素精确图像是不可接受的.我的图像都是全屏的,并且是覆盖的,因此在缩放模式下我看到了错误的放置.
我通过创建两个图像集解决了这个问题:
1)iPhone 6 /
6plus 在标准模式下 1242x2208图像在
2x条目中的3x条目750x1334
2)iPhone 6/6Plus处于缩放模式或iPhone 5
1125x2001用于3x入口
640x1136用于2x入口
640x1136用于R4-2x入口
为了使其工作,我需要确定设备是否是新设备之一以及它们是否处于缩放模式.根据此信息,我从正确的图像集加载图像.
这是我用来确定设备是否是缩放/标准模式中的新设备之一的代码:
UIScreen *screen = [UIScreen mainScreen];
if (screen.scale == 3 && screen.currentMode.size.width == 1242 ||
screen.scale == 2 && screen.currentMode.size.width == 750) {
self.overlay = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"StdImageSet"]];
} else {
self.overlay = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"ZoomedImageSet"]];
}
Run Code Online (Sandbox Code Playgroud)
这是丑陋的,我讨厌必须这样做,因为图像集应该消除这种代码.我没有看到更好的方法,我已经提交了一个雷达(雷达18463463)错误.
我发现这很有用:http://www.paintcodeapp.com/news/ultimate-guide-to-iphone-resolutions
似乎iPhone 6将使用重新采样的@ 2x(iPhone 5)图像.此外,图像集的属性(实用程序窗格)允许您在"通用"(x1,x2,x3)和"设备特定"图像孔之间切换.
我在这里放置了一些我为iPhone设备做的观察(也许有人会发现它有用):
2x Any/Any平铺2x 1GB/Any平铺2x 1GB/Any平铺2x 1GB/Any平铺3x 1GB/Any平铺为此,我检查了设备 - iPhone,内存1GB.正如您所看到的,图形之间没有区别iPhone 5/5S/6.也许玩设置Metal 1v2/2v2可以区分,但这看起来像是太疯狂了.知识参考从10:50开始
我现在从WWDC得到的是我们应该考虑的不是分辨率/设备/设备方向细节,而是专注于尺寸等级(除了6 Plus外,对于iPhone来说是相同的)但是如果有人仍然因为某些原因需要特定于设备的图形并希望使用资产目录(这很棒)然后在这里你得到我现在可用的(Xcode 7).
| 归档时间: |
|
| 查看次数: |
8767 次 |
| 最近记录: |