【问题标题】:Get system name of SF Symbol获取 SF Symbol 的系统名称
【发布时间】:2020-07-12 06:34:48
【问题描述】:

我正在尝试获取 SF Symbol 的系统名称。 这是我的图片:

let image = UIImage(systemName: "checkmark.circle.fill")

以后如何获取该映像的系统名称?

我还发现,当我打印图像的描述时,它会打印符号名称以及其他数据。有没有办法从那里提取名字?

<UIImage:0x600001d50900 symbol(system: checkmark.circle.fill) {20, 19} baseline=3.5,contentInsets={1, 1.5, 1, 1.5},alignmentRectInsets={-0.5, 0, -0.5, 0} config=<(null), traits=(UserInterfaceIdiom = Pad, DisplayScale = 2, DisplayGamut = P3, HorizontalSizeClass = Regular, VerticalSizeClass = Regular, UserInterfaceStyle = Light, UserInterfaceLayoutDirection = LTR, PreferredContentSizeCategory = L, AccessibilityContrast = Normal)>>

【问题讨论】:

  • 我也尝试打印描述,它确实打印了系统名称以及许多其他数据。
  • 它打印 "Optional("<0x102c12e00 checkmark>

标签: ios swift uiimage swift5 sf-symbols


【解决方案1】:

没有办法获取 UIImage 实例中使用的图像,但一种解决方法是设置“accessibilityIdentifier”,以便以后使用。

let img = UIImage(named: "Cat")
img?.accessibilityIdentifier = "Cat"



print(img?.accessibilityIdentifier) // Outputs: Cat

更多来自: How to get Image Name used in an UIImage?

【讨论】:

    【解决方案2】:

    使用这个扩展:

    extension UIImage {
    
     var sfSymbolName: String? {
            guard let strSeq = "\(String(describing: self))".split(separator: ")").first else { return nil }
            let str = String(strSeq)
            guard let name = str.split(separator: ":").last else { return nil }
            return String(name)
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-01-19
      • 1970-01-01
      • 2015-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-15
      • 2014-06-08
      • 1970-01-01
      相关资源
      最近更新 更多