从xcassets加载UIImage

4

我正在尝试从Image.xcassets文件夹中加载启动图像,但一直无法成功。在Stack Overflow上有其他答案(以及这个),声称可以解决问题,但它们的主要解决方法是像这样简单地加载图像:

UIImage *image =  [UIImage imageNamed:@"Default@2x"];

对我来说返回了nil。

文件名已正确命名,项目已设置使用资源。

有人知道我应该如何做或我可能做错了什么吗?

提前感谢。

编辑:

我的资源文件夹的截图

编辑2:我的最终代码:

-(void) loadSplashImage{
if ([self isiPad]){
    self.imageViewSplash.image =  [UIImage imageNamed:@"Default-Portrait"];
}
else{
    if (self.view.frame.size.height == 480){
        self.imageViewSplash.image =  [UIImage imageNamed:@"Default"];
    }
    else if (self.view.frame.size.height == 568){
        self.imageViewSplash.image =  [UIImage imageNamed:@"Default-568h"];
    }
    else if (self.view.frame.size.height == 667){
        self.imageViewSplash.image =  [UIImage imageNamed:@"Default-667h"];
    }
}

请注意,此功能仅适用于纵向模式。


你需要提供资产名称而不是图像名称。 - Ashish Kakkad
我也尝试将Default.png(现在已过时)添加到资源中。 - Guy Lowe
检查答案:https://dev59.com/m4_ea4cB1Zd3GeqPSsW_#32945986 - Ashish Kakkad
3个回答

7

您不必在名称中指定图像的大小。它会自动加载最适合运行应用程序的设备的大小。因此,您的代码应该如下所示。

UIImage *image =  [UIImage imageNamed:@"Default"];

这里的default是来自xcassets中的资源名称,它会出现在左侧列表中。


谢谢Jelly,但我仍然得到了nil。 - Guy Lowe
请发布您的“xcassets”截图,以便我们可以看到它的外观。 - Jelly
1
你必须将它们放入Xcode中,因为如果你只是把它们放在文件夹里,它们不会被捕捉到。 - Jelly
你的Xcode项目中应该有一个Assets.xcassets文件。打开它,然后将你的资源放进去。在这里可以了解更多关于资源目录的信息:https://developer.apple.com/library/ios/recipes/xcode_help-image_catalog-1.0/_index.html。 - Jelly
在XCode中添加对它们的引用就解决了问题。非常感谢。 - Guy Lowe

1

0

你应该有2个文件:

(1) Default.png (或任何其他图像格式) — 非Retina

(2) Default@2x.png — Retina

现在,为了获取这个图像,你不需要在文件名末尾使用@2x。只需使用该图像资源的名称即可。


谢谢NSPratik,但我仍然得到了空值。 - Guy Lowe
请尝试使用除“Default”以外的名称。 - NSPratik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接