Pat*_*ick 4 xcode fonts objective-c emoji
我想遍历表情符号输入字符串的'字符'(来自UITextField),然后一个接一个地显示那些带有UILabel的表情符号图标.
for (int i=0; i < len; i++) {
unichar c = [transformedString characterAtIndex:i];
[label setText:[NSString stringWithFormat:@"%C", c]];
...
Run Code Online (Sandbox Code Playgroud)
这适用于ASCII文本但不适用于表情符号字体(除心脏符号外均为空).正如我所注意到的,单个表情符号图标由字符串中的2个字符表示.据我所知,表情符号使用私有区域unicode字符.
反正有没有实现这个目标?
非常感谢,你让我有些头疼......
您可以使用NSString上的枚举*实例方法之一,并使用该选项NSStringEnumerationByComposedCharacterSequences.
- (void)enumerateSubstringsInRange:(NSRange)range
options:(NSStringEnumerationOptions)opts
usingBlock:(void (^)(NSString *substring,
NSRange substringRange,
NSRange enclosingRange,
BOOL *stop))block
Run Code Online (Sandbox Code Playgroud)
NSString使用UTF-16,它将一些代码点表示为两个16位值.您也可以手动检查字符串中的这些"代理对"并手动组合它们,但是您仍然只能获得代码点而不是字符.
[transformedString
enumerateSubstringsInRange:NSMakeRange(0,[transformedString length]
options:NSStringEnumerationByComposedCharacterSequences
usingBlock: ^(NSString *substring,NSRange,NSRange,BOOL *)
{
[label setText:substring];
}];
Run Code Online (Sandbox Code Playgroud)