gpt4 book ai didi

用于字体图标的 ios 动态 unicode NSString

转载 作者:可可西里 更新时间:2023-11-01 05:43:16 25 4
gpt4 key购买 nike

我在 ios 中使用了一些字体图标,这些图标需要通过其 unicode 字符串来识别图标。我希望能够从我的服务器中检索代码作为 JSON,并动态创建此 unicode 字符串以检索字体图标并放入标签等。但是我在进行转换时遇到了麻烦。基于以下代码的任何想法?

工作示例在这里,其中“E539”是从服务器接收到的字符串。我可以对其进行硬编码并且它可以工作,但动态创建它并不那么容易。

[iconLabel materialIconWithUnicodeStr:[NSString stringWithFormat:@"\uE539"]];

这些类型的东西不起作用:

[iconLabel materialIconWithUnicodeStr:[NSString stringWithFormat:@"\u%@", @"E539"]];
[iconLabel materialIconWithUnicodeStr:[NSString stringWithFormat:@"\\u%@", @"E539"]];

我在这里找到一个类,它将使用 UTF32Char 来生成 unicode。此行有效,但不是完整的解决方案。

[iconLabel materialIconWithUnicodeStr:[EntypoStringCreator stringForIcon:0xE539]]

试图将它拼凑在一起,而不是盲目地从我发现的代码中拼凑出来,几乎可以工作,但会创建错误的 unicode。我不知道为什么。

NSString  *unicodeStr = @"E539";

// attempt to convert E539 -> 0xE539
UTF32Char outputChar;
if ([unicodeStr getBytes:&outputChar maxLength:4 usedLength:NULL encoding:NSUTF32LittleEndianStringEncoding options:0 range:NSMakeRange(0, 1) remainingRange:NULL]) {
outputChar = NSSwapLittleIntToHost(outputChar); // swap back to host endian
// outputChar now has the first UTF32 character
}

// this does not give the correct icon at all
[iconLabel [EntypoStringCreator stringForIcon:outputChar]];

最佳答案

您的 materialIconWithUnicodeStr: 方法正在寻找一个字符串,其中编码了实际的 unicode 字符。您的示例可以实现此目的,因为转义序列在编译时起作用以生成字符。您的示例不起作用,因为\u 转义是编译时转义,在运行时不起作用,无论您如何格式化或双重转义它。

您需要一种在运行时从您拥有的十六进制值中获取 unicode 字符的方法:

unsigned c = 0;
NSScanner *scanner = [NSScanner scannerWithString:@"E539" ];
[scanner scanHexInt: &c];
NSString* unicodeStr = [NSString stringWithFormat: @"%C", (unsigned short)c];

[iconLabel materialIconWithUnicodeStr: unicodeStr];

关于用于字体图标的 ios 动态 unicode NSString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37329028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com