From 7b02207537d35bfa1714bf8beafc921f717d100a Mon Sep 17 00:00:00 2001 From: 单军华 Date: Wed, 11 Jul 2018 10:47:42 +0800 Subject: [PATCH] 首次上传 --- screendisplay/Pods/EaseUI/EaseUI/EMUIKit/Util/Emoji/EaseEmotionEscape.m | 168 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 168 insertions(+), 0 deletions(-) diff --git a/screendisplay/Pods/EaseUI/EaseUI/EMUIKit/Util/Emoji/EaseEmotionEscape.m b/screendisplay/Pods/EaseUI/EaseUI/EMUIKit/Util/Emoji/EaseEmotionEscape.m new file mode 100755 index 0000000..7b00a96 --- /dev/null +++ b/screendisplay/Pods/EaseUI/EaseUI/EMUIKit/Util/Emoji/EaseEmotionEscape.m @@ -0,0 +1,168 @@ +/************************************************************ + * * Hyphenate CONFIDENTIAL + * __________________ + * Copyright (C) 2016 Hyphenate Inc. All rights reserved. + * + * NOTICE: All information contained herein is, and remains + * the property of Hyphenate Inc. + * Dissemination of this information or reproduction of this material + * is strictly forbidden unless prior written permission is obtained + * from Hyphenate Inc. + */ + +#import "EaseEmotionEscape.h" + +#define RGBCOLOR(r,g,b) [UIColor colorWithRed:(r)/255.0f green:(g)/255.0f blue:(b)/255.0f alpha:1] +#define kEmotionTopMargin -3.0f + +@implementation EMTextAttachment +//I want my emoticon has the same size with line's height +- (CGRect)attachmentBoundsForTextContainer:(NSTextContainer *)textContainer proposedLineFragment:(CGRect)lineFrag glyphPosition:(CGPoint)position characterIndex:(NSUInteger)charIndex NS_AVAILABLE_IOS(7_0) +{ + return CGRectMake( 0, kEmotionTopMargin, lineFrag.size.height, lineFrag.size.height); +} + +@end + +@interface EaseEmotionEscape () +{ + NSString *_urlPattern; + NSDictionary *_dict; +} + +@end + +@implementation EaseEmotionEscape + +static EaseEmotionEscape *_sharedInstance = nil; + ++ (EaseEmotionEscape *)sharedInstance +{ + if (_sharedInstance == nil) + { + @synchronized(self) { + _sharedInstance = [[EaseEmotionEscape alloc] init]; + } + } + return _sharedInstance; +} + ++ (NSMutableAttributedString *) attributtedStringFromText:(NSString *) aInputText +{ + return nil; +} + ++ (NSAttributedString *) attStringFromTextForChatting:(NSString *) aInputText +{ + return nil; +} + ++ (NSAttributedString *) attStringFromTextForInputView:(NSString *) aInputText +{ + return nil; +} + +- (NSMutableAttributedString *) attributtedStringFromText:(NSString *) aInputText +{ + if (_urlPattern == nil || _urlPattern.length == 0) { + NSMutableAttributedString * string = [[ NSMutableAttributedString alloc ] initWithString:aInputText attributes:nil ]; + return string; + } + NSString *urlPattern = _urlPattern; + NSError *error = nil; + NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:urlPattern options:NSRegularExpressionCaseInsensitive error:&error ]; + + NSArray* matches = [regex matchesInString:aInputText options:NSMatchingReportCompletion range:NSMakeRange(0, [aInputText length])]; + NSMutableAttributedString * string = [[ NSMutableAttributedString alloc ] initWithString:aInputText attributes:nil ]; + + for (NSTextCheckingResult *match in [matches reverseObjectEnumerator]) { + NSRange matchRange = [match range]; + NSString *subStr = [aInputText substringWithRange:matchRange]; + + EMTextAttachment * textAttachment = [[EMTextAttachment alloc ] initWithData:nil ofType:nil]; + textAttachment.imageName = subStr; + UIImage * emojiImage; + NSString *emojiName = @""; + if (_dict) { + emojiName = [_dict objectForKey:subStr]; + } + + if (emojiName == nil || emojiName.length == 0) { + emojiName = subStr; + } + + emojiImage = [UIImage imageNamed:emojiName]; + + NSAttributedString * textAttachmentString; + if (emojiImage) { + textAttachment.image = emojiImage ; + textAttachmentString = [NSAttributedString attributedStringWithAttachment:textAttachment]; + }else{ + NSString *str = [self getEmojiTextByKey:subStr]; + if (str != nil) { + str = [NSString stringWithFormat:@"[%@]", str]; + textAttachmentString = [[NSAttributedString alloc] initWithString:str]; + }else { + textAttachmentString = [[NSAttributedString alloc] initWithString:@"[������]"]; + } + } + + if (textAttachment != nil) { + [string deleteCharactersInRange:matchRange]; + [string insertAttributedString:textAttachmentString atIndex:matchRange.location]; + } + } + + return string; +} + +- (NSAttributedString *) attStringFromTextForChatting:(NSString *) aInputText textFont:(UIFont*)font +{ + NSMutableAttributedString * string = [self attributtedStringFromText:aInputText]; +// NSMutableParagraphStyle * paragraphStyle = [[NSMutableParagraphStyle alloc] init]; +// paragraphStyle.lineSpacing = 0.0; +// [string addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [string length])]; + if (font) { + [string addAttribute:NSFontAttributeName value:font range:NSMakeRange(0, string.length)]; + } + return string; +} + +- (NSAttributedString *) attStringFromTextForInputView:(NSString *) aInputText textFont:(UIFont*)font +{ + NSMutableAttributedString * string = [self attributtedStringFromText:aInputText]; +// NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; +// paragraphStyle.lineSpacing = 0.0; +// [string addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, string.length)]; + if (font) { + [string addAttribute:NSFontAttributeName value:font range:NSMakeRange(0, string.length)]; + } + return string; +} + +- (NSString*) getEmojiTextByKey:(NSString*) aKey +{ + NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); + NSString *plistPaht = [paths objectAtIndex:0]; + NSString *fileName = [plistPaht stringByAppendingPathComponent:@"EmotionTextMapList.plist"]; + NSMutableDictionary *emojiKeyValue = [[NSMutableDictionary alloc] initWithContentsOfFile: fileName]; + return [emojiKeyValue objectForKey:aKey]; + // NSLog(@"write data is :%@",writeData); +} + +- (NSString*) getEmojiImageNameByKey:(NSString*) aKey +{ + return nil; +} + +- (void) setEaseEmotionEscapePattern:(NSString *)pattern +{ + _urlPattern = pattern; +} + +- (void) setEaseEmotionEscapeDictionary:(NSDictionary*)dict +{ + _dict = dict; +} + +@end \ No newline at end of file -- Gitblit v1.8.0