【问题标题】:Console printing different text font swift控制台快速打印不同的文本字体
【发布时间】:2015-10-24 09:48:15
【问题描述】:

我为我的textField 设置了不同的字体,它工作正常。我可以通过这种方式在我的textField 中输入古吉拉特语字体:

但是当我尝试打印用户的文本时,它正在打印英文字母。假设我像અબચ 一样输入textField,但它会在控制台中打印Optional("abc"),所以我尝试使用attributedString,但它给了我相同的结果,下面是我的代码:

if let font = UIFont(name: "HARIKRISHNA", size: 16) {
        let attributedString = NSMutableAttributedString(string: userText!, attributes: [NSFontAttributeName : font])
        print(attributedString.string)
    } else {
        // The font "Raleway-SemiBold" is not found
        print("The font Raleway-SemiBold is not found")

    }

有没有办法以textField 的相同语言记录输出?

Sample 了解更多信息。

【问题讨论】:

  • 是的。我想要与用户输入 textField 相同的日志。 @EICaptain
  • 您可以在 Xcode 首选项 > 字体和颜色中更改控制台字体
  • 我想使用该文本搜索搜索控制器。
  • @EICaptain 除非字体无法通过字体检查器访问,否则 OP 应该能够选择他的字体。他设法更改了文本字段的字体,因此也应该能够将控制台字体更改为相同的字体。
  • 控制台使用您无法以编程方式更改的固定字体。 print(textF.attributedText!) 将打印包含属性的“文本表示”。但是您对搜索控制器的实际问题是什么?

标签: ios swift fonts nsattributedstring


【解决方案1】:

Xcode 控制台窗口使用可以在 Xcode 中更改的字体 首选项,但不是在运行时以编程方式。 print() 函数写入一个“文本表示” 给定的论点。对于String,这只是字符串本身:

print(textF.text!)
// Output:
abc

对于属性字符串,文本表示是描述 包含字符串和属性:

print(textF.attributedText!)
// Output:
abc{
    NSColor = "UIDeviceRGBColorSpace 0 0 0 1";
    NSFont = "<UICTFont: 0x7fa6984241f0> font-family: \"HARIKRISHNA\"; font-weight: normal; font-style: normal; font-size: 14.00pt";
    NSParagraphStyle = "Alignment 4, LineSpacing 0, ParagraphSpacing 0, ParagraphSpacingBefore 0, HeadIndent 0, TailIndent 0, FirstLineHeadIndent 0, LineHeight 0/0, LineHeightMultiple 0, LineBreakMode 2, Tabs (\n    28L,\n    56L,\n    84L,\n    112L,\n    140L,\n    168L,\n    196L,\n    224L,\n    252L,\n    280L,\n    308L,\n    336L\n), DefaultTabInterval 0, Blocks (\n), Lists (\n), BaseWritingDirection 0, HyphenationFactor 0, TighteningForTruncation NO, HeaderLevel 0";
    NSShadow = "NSShadow {0, -1} color = {(null)}";
}

您的实际问题似乎是另一个问题。分配一个特殊的 文本字段的字体仅更改字符串的外观, 而不是字符串本身中的字符。

所以如果用户输入"abc" 那么textF.text 就是"abc",即使你 有一个显示"અબચ"的字体。因此匹配 针对"અબચ" 的字符串不起作用。

我没有古吉拉特语的经验来提出一个好的建议 解决方案。知道您可以“音译”可能会很有趣 外语到拉丁字母(来自http://nshipster.com/cfstringtransform/):

let text = "અબચ" as NSMutableString
CFStringTransform(text, nil, kCFStringTransformToLatin, false)
print(text) 

结果是“蕉麻”,因为

અ = GUARATI LETTER A
બ = GUARATI LETTER BA
ચ = GUARATI LETTER CA

但我不知道这对您的实际应用是否有帮助。

【讨论】:

  • 有什么方法可以将abc 转换为અબચ,因为我在我的问题中尝试使用NSMutableAttributedString?所以我可以用它来搜索。
  • @DharmeshKheni:正如我所说,您只转换属性,而不是字符串本身。 “a”和“અ”是不同的字符。如果古吉拉特语与拉丁字母一一对应,那么您可以使用固定字典映射每个字符。
猜你喜欢
  • 1970-01-01
  • 2013-05-23
  • 2013-05-09
  • 1970-01-01
  • 1970-01-01
  • 2017-07-14
  • 2018-04-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多