【问题标题】:Disable #imageLiteral(resourceName: <..>) preview in Xcode?在 Xcode 中禁用#imageLiteral(resourceName: <..>) 预览?
【发布时间】:2018-11-19 09:44:11
【问题描述】:

我发现图像文字更让人分心而不是有用。
有什么办法可以禁用这个 Xcode 功能?

【问题讨论】:

  • UIImage(named: "...")那样正常初始化图片就好了。
  • 问题是它已经在我目前正在处理的项目中。它看起来像是一排排相同的空白区域,没有上下文。
  • 我同意这是一个设计缺陷。我不介意在那里显示图像,但我遇到了代码被隐藏且无法编辑的问题。
  • 您可以将其注释掉,这会将图像转换为文本,然后对其进行编辑并取消注释。我喜欢这张图片(以及颜色)的文字特征。易于使用,非常方便。
  • 它可能是当今所有软件工程中最愚蠢、最奇怪的特性。这是..令人难以置信的..你不能把它关掉!

标签: xcode image-literals


【解决方案1】:

一个好的方法是用UIImage(imageLiteralResourceName:)初始化器(thanks for the suggestion, @D6mi!)替换所有出现的#imageLiteral。以下是您可以自动执行此操作的方法:

  1. 导航到查找/查找和替换...(或按⌥⌘F)。

  2. 打开右侧的下拉列表,选择Regular Expression

  3. 对于搜索词,输入以下正则表达式:

    #imageLiteral\(resourceName: (.*)\)
    

    要替换,请输入:

    UIImage(imageLiteralResourceName: $1)
    

    这个正则表达式(.*)捕获资源名称的值,然后用$1再次插入它。反斜杠用于转义括号,因为它们被视为特殊字符。

请注意,在这种情况下,您不必使用正则表达式 (as LinusGeffarth pointed out),但在比这更复杂的情况下,它可能更有用。

【讨论】:

  • 太酷了,我打算提出这个建议,但不知道我们可以保留在正则表达式中找到的图像名称。不过,从技术上讲,我们甚至不需要使用正则表达式,因为我们可以将 #imageLiteral(resourceName: 替换为 UIImage(named:,这将导致相同的结果......
  • @LinusGeffarth 你说得对,在这种情况下不需要正则表达式。但是,它的可定制性更高,如果初始化程序更复杂,它会很有用。
  • 完全同意!不过,我要理解一个问题:我怎么知道$1 会是什么?
  • 好吧。这个解决方案解决了这个问题,但我宁愿不要将任何更改放入存储库。我不是该项目的唯一开发人员,它可能会导致不必要的合并问题。
  • 不知道你能做到这一点,谢谢 Tamàs!我建议使用 UIImage 初始化器 - init(imageLiteralResourceName:),作为结果 UIImagenot an optional,而 named 初始化器是 optional
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-12
  • 1970-01-01
  • 2018-04-21
  • 2014-03-29
  • 2018-09-01
  • 2022-09-23
  • 2020-04-19
相关资源
最近更新 更多