首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Swift中动态显示自定义字体图标代码

在Swift中动态显示自定义字体图标代码
EN

Stack Overflow用户
提问于 2020-12-27 19:37:07
回答 2查看 106关注 0票数 0

我需要显示图标从一个自定义字体在快速动态。图标格式类似:\u{code} example:\u{e054}。图标的动态值只包含代码,不包含\u{},因此我需要一种构建字符串和连接内容的方法。

我让它工作了,我可以看到图标,但前提是我对它们进行了硬编码,所以它可以工作并显示图标:

代码语言:javascript
运行
复制
// works and displays and icon something like ? 
Text("\("\u{e054}")")
  .font(.custom("custom-font", size: 30))

但我需要动态显示它,下面的所有解决方案都不起作用,只显示栏文本,而不显示图标:

代码语言:javascript
运行
复制
// doesn't work and displays \u{e054} instead of the icon
Text("\\u{\(icon_code)}")
  .font(.custom("custom-font", size: 15))
代码语言:javascript
运行
复制
// also doesn't work and displays \u{e054} instead of the icon
Text( #\u{\#(icon_code)}#)
  .font(.custom("custom-font", size: 15))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-27 20:53:24

您可以轻松地创建字符串扩展,您可以通过将字符串转换为Int代码,然后将代码转换为unicode字符来处理该扩展

代码语言:javascript
运行
复制
extension String {
    var unicode: String {
        guard let code = UInt32(self, radix: 16),
              let scalar = Unicode.Scalar(code) else {
            return ""
        }
        return "\(scalar)"
    }
}

可以像这样使用:

代码语言:javascript
运行
复制
Text("e054".unicode)
  .font(.custom("custom-font", size: 30))
票数 1
EN

Stack Overflow用户

发布于 2020-12-27 20:16:21

我没有你的自定义字体,但是有了代码,我们可以使用Unicode.Scalar动态生成符号,就像下面的演示

代码语言:javascript
运行
复制
var icon_code = 0xe054
var body: some View {
    if let value = Unicode.Scalar(icon_code) {
        Text(value.escaped(asASCII: false))
            .font(.system(size: 60))
    }
}

,它相当于硬编码。

代码语言:javascript
运行
复制
Text("\u{e054}").font(.system(size: 60))

如果原始输入是-a String,则使用转换器

代码语言:javascript
运行
复制
var icon_code = "e054"
var body: some View {
    if let code = Int(icon_code, radix: 16), let value = Unicode.Scalar(code) {
        Text(value.escaped(asASCII: false))
            .font(.system(size: 60))
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65465323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档