나는 이모티콘이 포함 된 텍스트를 가지고 있습니다. 인코딩과 디코딩을 통해 올바르게 표시 할 수 있습니다. 이모티콘 만 글꼴 크기를 늘리면됩니다. 증가 글꼴 크기 NSAttributedString
에서 나는 모든 이모티콘의 범위를 결정하기 위해 아이디어를 가지고이모티콘을 감지하고 글꼴 크기를 변경하는 방법
아래 이미지처럼 텍스트 및 공급. 이제 주어진 문자열에서 이모티콘의 범위를 어떻게 감지 할 수 있을지 생각하지 못했습니다.
감사
나는 이모티콘이 포함 된 텍스트를 가지고 있습니다. 인코딩과 디코딩을 통해 올바르게 표시 할 수 있습니다. 이모티콘 만 글꼴 크기를 늘리면됩니다. 증가 글꼴 크기 NSAttributedString
에서 나는 모든 이모티콘의 범위를 결정하기 위해 아이디어를 가지고이모티콘을 감지하고 글꼴 크기를 변경하는 방법
아래 이미지처럼 텍스트 및 공급. 이제 주어진 문자열에서 이모티콘의 범위를 어떻게 감지 할 수 있을지 생각하지 못했습니다.
감사
감사합니다 이모티콘의
-(NSMutableAttributedString *)getAttributedEmojiString:(NSString *)inputString{
NSMutableArray *__block emojiRange=[[NSMutableArray alloc] init];
[inputString enumerateSubstringsInRange:NSMakeRange(0, [inputString length])
options:NSStringEnumerationByComposedCharacterSequences
usingBlock: ^(NSString* substring, NSRange substringRange, NSRange enclosingRange, BOOL* stop) {
if([substring isEmoji]){
[emojiRange addObject:@{@"startrange":@(substringRange.location),@"endrange":@(enclosingRange.length)}];
}
}];
NSMutableAttributedString *mutString=[[NSMutableAttributedString alloc] initWithString:inputString];
[mutString addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:16.0] range:NSMakeRange(0, mutString.length)];
[emojiRange enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
[mutString addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:35.0] range:NSMakeRange([obj[@"startrange"] floatValue], [obj[@"endrange"] floatValue])];
}];
return mutString;
}
설명
isEmoji
을 사용하여 문자열의 모든 그림이 포함 된 NSRange를 찾고 배열로 저장하십시오.마지막으로 생성 된 속성 텍스트를 레이블에 지정하십시오.내가 서버에이 값을 저장하고 API를 통해 읽을 필요가 있기 때문에
self.label.attributedText=[self getAttributedEmojiString:EmojiDecoded(originalText)];
내가 디코드 이모티콘의 인코딩 두 매크로를 사용하고, 아래의 매크로입니다.
#define Encoded(val) [[val dataUsingEncoding:NSUTF8StringEncoding] base64EncodedStringWithOptions:0]
#define Decoded(val) [[NSString alloc] initWithData:[[NSData alloc] initWithBase64EncodedString:val options:0] encoding:NSUTF8StringEncoding]
#define EmojiEncoded(val) [[NSString alloc] initWithData:[val dataUsingEncoding:NSNonLossyASCIIStringEncoding] encoding:NSUTF8StringEncoding]
#define EmojiDecoded(val) [[NSString alloc] initWithData:[val dataUsingEncoding:NSUTF8StringEncoding] encoding:NSNonLossyASCIIStringEncoding]
는 유사한 솔루션을 찾고있는 누군가를 도움이되기를 바랍니다.
건배, 그리고 모두에게 감사드립니다.
어떻게 이모티콘 찾기 방법을 변경 했습니까? –
@MridulGupta 정확하게 기억하지 못합니다. 그러나 아무것도 변환하지 않았고 NSString + RemoveEmoji 카테고리를 사용했습니다. 내 대답은 문자열이 모호한 여부를 결정하는 경우 예 문자열의 범위를 저장하고 글꼴 크기를 증가. 내 대답은 끝났다. 아무것도 더 이상 없다. – iphonic
직접 아래 또는
if ([myString containsString:@""])
{
NSLog(@"one");
//change the font size here.
}
else
{
NSLog(@"fk");
//change the font size here.
}
처럼 사용하거나이
[mystring is isEqualToString:"I believe "];
를 사용할 수는 사람들을보십시오. 이것이 당신에게 도움이되기를 바랍니다.
나는
NSString *str = @"this is and test ";
NSArray *arr = [str componentsSeparatedByString:@" "];
for (int i = 0; i < arr.count; i++) {
NSString *temp = [arr objectAtIndex:i];
if (![temp canBeConvertedToEncoding:NSASCIIStringEncoding]) {
NSLog(@"%d",i);
NSLog(@"%@",temp); // temp is emoji. You can detect emoji here from your string now you can manage as per your need
}
}
내가 좋아하는
let string = "This is emoji Test"
let attributedEmoji = NSMutableAttributedString(string: " \u{1F600}", attributes: [NSFontAttributeName:UIFont.systemFontOfSize(60)])
let attribString = NSMutableAttributedString.init(string: string)
attribString.appendAttributedString(attributedEmoji)
lblEmoji.attributedText = attribString
당신은 확장 할 수있는 글꼴 및 글꼴 크기를 변경할 수 있습니다를 같은 일을 한 번 데모, 당신은 다음과 같은 문자열에서 이모티콘을 감지 할 수 만들었습니다 이모티콘.
희망 정보는이 정보가 도움이 될 것입니다. 대답하지만, @NSString-RemoveEmoji을 찾기 위해 주권의 제안이에 대한 해결책을 달성하기 위해 나에게 도움이 비록 아무도 여기에 그것이 어떤 종류의 작품이다, 완전한 답변 없었다 모든 사람에게
\ u {1F600} - 이모티콘 유니 코드입니다. emoji의 유니 코드는 http://unicode.org/emoji/charts/full-emoji-list.html –
에 있습니다.이 방법은 알고 있습니다. 제 질문을 참조하십시오. 문제는'\ u {1F600}'을 어떻게 탐지 할 수 있는가입니다. – iphonic
내 편집 된 답변을 확인하고 아래쪽의 두 URL이 문제를 해결합니다 –
문자열에서 이모티콘 세트의 속성을 변경할 수 있습니다. – holex