Objective c 视网膜图像的使用和设置UIImageView

Objective c 视网膜图像的使用和设置UIImageView,objective-c,uiimageview,Objective C,Uiimageview,这是我第一次需要使用名称格式为like:@2x和-568h@2x但我不明白什么时候-568@2x使用。这应该适用于iPhone 5及以上,但在测试时,我的iPhone 5S上没有使用此图像 我努力寻找这个问题,但找不到 问题: 所有设备上仅使用@2x映像,并且-568@2x完全被忽视了。因此,当我在故事板中设置UIImageView以填充整个屏幕时,屏幕上的图像上方有一个间隙。因此,在我的理解中,使用setImage,它将首先查看项目文件夹,然后查看资产目录。但这仍然不需要时间-568@2x图像

这是我第一次需要使用名称格式为like:@2x和-568h@2x但我不明白什么时候-568@2x使用。这应该适用于iPhone 5及以上,但在测试时,我的iPhone 5S上没有使用此图像

我努力寻找这个问题,但找不到

问题: 所有设备上仅使用@2x映像,并且-568@2x完全被忽视了。因此,当我在故事板中设置UIImageView以填充整个屏幕时,屏幕上的图像上方有一个间隙。因此,在我的理解中,使用setImage,它将首先查看项目文件夹,然后查看资产目录。但这仍然不需要时间-568@2x图像,并始终拍摄@2x图像

我还为UIImageView设置了正确的自动布局,使其适合顶部、底部、左侧和右侧

代码/屏幕:

因此,我的项目文件夹中有两个图像,如您在图像上看到的:

下面是顶部的间隙:

然后在我的代码中,我使用此代码设置插座上的图像:

[[self image] setImage:[UIImage imageNamed:@"firstLaunch"]];
那么问题出在哪里呢?我是不是完全错了自动图像命名的工作原理


谢谢

您可以这样做:

CGRect screenBounds = [[UIScreen mainScreen] bounds];

if (screenBounds.size.height == 568) {
    self.view.layer.contents = (id)[UIImage imageNamed:@"firstLaunch@R4"].CGImage;
} else {
    self.view.layer.contents = (id)[UIImage imageNamed:@"firstLaunch@2x"].CGImage;
}

除非他们最近更改了它,否则568名称仅适用于发布映像。在检查UI屏幕边界后,您必须自己加载其他图像,以查看您使用的设备。哦,真的,我很抱歉,这是为这种情况制作的。因此,这只适用于启动图像。。