Files
2026-07-13 12:35:01 +08:00

98 lines
2.6 KiB
Objective-C

//
// TLExpressionMessage.m
// TLChat
//
// Created by libokun on 16/3/28.
// Copyright © 2016年 李伯坤. All rights reserved.
//
#import "TLExpressionMessage.h"
@implementation TLExpressionMessage
@synthesize emoji = _emoji;
- (id)init
{
if (self = [super init]) {
[self setMessageType:TLMessageTypeExpression];
}
return self;
}
- (void)setEmoji:(TLExpressionModel *)emoji
{
_emoji = emoji;
[self.content setObject:emoji.gid forKey:@"groupID"];
[self.content setObject:emoji.eId forKey:@"emojiID"];
CGSize imageSize = [UIImage imageNamed:self.path].size;
[self.content setObject:[NSNumber numberWithDouble:imageSize.width] forKey:@"w"];
[self.content setObject:[NSNumber numberWithDouble:imageSize.height] forKey:@"h"];
}
- (TLExpressionModel *)emoji
{
if (_emoji == nil) {
_emoji = [[TLExpressionModel alloc] init];
_emoji.gid = self.content[@"groupID"];
_emoji.eId = self.content[@"emojiID"];
}
return _emoji;
}
- (NSString *)path
{
return self.emoji.path;
}
- (NSString *)url
{
return [TLExpressionModel expressionDownloadURLWithEid:self.emoji.eId];
}
- (CGSize)emojiSize
{
CGFloat width = [self.content[@"w"] doubleValue];
CGFloat height = [self.content[@"h"] doubleValue];
return CGSizeMake(width, height);
}
#pragma mark -
- (TLMessageFrame *)messageFrame
{
if (kMessageFrame == nil) {
kMessageFrame = [[TLMessageFrame alloc] init];
kMessageFrame.height = 20 + (self.showTime ? 30 : 0) + (self.showName ? 15 : 0);
kMessageFrame.height += 5;
CGSize emojiSize = self.emojiSize;
if (CGSizeEqualToSize(emojiSize, CGSizeZero)) {
kMessageFrame.contentSize = CGSizeMake(80, 80);
}
else if (emojiSize.width > emojiSize.height) {
CGFloat height = MAX_MESSAGE_EXPRESSION_WIDTH * emojiSize.height / emojiSize.width;
height = height < MIN_MESSAGE_EXPRESSION_WIDTH ? MIN_MESSAGE_EXPRESSION_WIDTH : height;
kMessageFrame.contentSize = CGSizeMake(MAX_MESSAGE_EXPRESSION_WIDTH, height);
}
else {
CGFloat width = MAX_MESSAGE_EXPRESSION_WIDTH * emojiSize.width / emojiSize.height;
width = width < MIN_MESSAGE_EXPRESSION_WIDTH ? MIN_MESSAGE_EXPRESSION_WIDTH : width;
kMessageFrame.contentSize = CGSizeMake(width, MAX_MESSAGE_EXPRESSION_WIDTH);
}
kMessageFrame.height += kMessageFrame.contentSize.height;
}
return kMessageFrame;
}
- (NSString *)conversationContent
{
return @"[表情]";
}
- (NSString *)messageCopy
{
return [self.content mj_JSONString];
}
@end