Xcode 8 图像补全

33

在Xcode 8中,您可以在输入时自动完成图像。

问题是:为什么?

我尝试使用建议的结果初始化UIImage,但它不起作用。

UIImage内部 UIImage外部

是否有人知道该如何使用它?


我认为这只在playgrounds中有效。至少看起来是这样的。 - NickDK
2
你需要提供更多信息,可能需要分享相关代码和Xcode版本。对我来说,图像文字字面量可以很好地工作,不仅在playgrounds中。 - James P
这是我在使用Xcode时遇到的最令人恼火的功能。就像是,“这是一个省时的功能...开玩笑!” - Adrian
1
我正在使用Xcode 9和Swift 4,但在“智能感知”中看不到图像预览。 - Van Du Tran
4个回答

47

Xcode 8会自动识别Asset Catalog中的任何图像,并在UIImage初始化器内提供它们作为建议。因此,基本上您所需要做的就是按照以下步骤操作(就像您在问题中已经完成的一样,但可能还有其他干扰因素):

let i = voiture // image name

当您想设置一张图片时,只需使用i即可。

在幕后,它会创建类似于这样的代码:#imageLiteral(resourceName: "voiture.png")。但是,在源代码编辑器中,您只会看到图像文件的名称。 #imageLiteral语法仅在Swift 3或更高版本上被识别。

这里是演示视频链接,我在其中进行了演示,并且这里是我创建的一个示例项目的链接。

注意,您需要单击instellisense建议,以便在代码中看到图像缩略图和图像名称。

更新1

此功能仍然存在于Xcode版本9.0 beta 6(9M214v) enter image description here

更新2

Xcode 11.2.1,此功能不再出现。


如果您查看第二个截图,我遇到了编译器问题,无法构建... - CZ54
2
正如我在答案中所写,肯定有其他的因素干扰了它。你看了我上传的视频吗?我做的方式和视频里一样。这里是我创建的项目链接,请尝试下载并运行它,看看是否能够正常工作。 - Rashwan L
2
你的示例和我的应用程序之间唯一的区别就是你使用的是Swift 3。所以我想这就是它了。 - CZ54
只是一个更新。当您将设备设置为iPad时,图像文字不会显示图像和图像名称。如果设置为Universal,则可以正常工作。 - aytek

10

一个图像文字已经是UIImage,您不需要将其传递给UIImage来初始化一个。


哈哈 - 显然,如果上下文允许的话,Xcode足够聪明,可以将类型推断为UIImage,否则以上代码会在编译时出现错误。 - Victor Engel

10

我无法找到官方来源来证实这一点,但是从我的个人测试中看来,在Swift 2.3和Swift 3.0项目中都可以使用自动完成,但是图像文字字面量只会在Swift 3项目中正确工作。

在Swift 3 Playground中尝试一下就会发现它能够正常工作。

输入图片描述


3
是的,我确认在一个Swift 2.3项目中出现了错误。 - ColdLogic

4
我一直在使用这个功能。基本上,如果我有一个以“ic”开头的图像,我会输入let i =,然后是ic。此时,Xcode 8将显示一个下拉列表,并且我可以从中选择正确的图像。我从来没有费心去实际输入UIImage(。它的工作方式就像自动完成代码一样,只是它使用图像的文件名。
在您的情况下,可能有其他问题导致编译失败。

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