#import "TGNeoTextMessageViewModel.h" #import "TGNeoLabelViewModel.h" #import "TGMessageViewModel.h" #import "TGBridgeMessage.h" @interface TGNeoTextMessageViewModel () { TGNeoLabelViewModel *_textModel; } @end @implementation TGNeoTextMessageViewModel - (instancetype)initWithMessage:(TGBridgeMessage *)message type:(TGNeoMessageType)type users:(NSDictionary *)users context:(TGBridgeContext *)context { self = [super initWithMessage:message type:type users:users context:context]; if (self != nil) { NSString *text = [message.text stringByReplacingOccurrencesOfString:@"/" withString:@"/\u2060"]; CGFloat fontSize = [TGNeoBubbleMessageViewModel bodyTextFontSize]; UIColor *textColor = [self normalColorForMessage:message]; if (message.textCheckingResults.count > 0) { _textModel = [[TGNeoLabelViewModel alloc] initWithAttributedText:[TGMessageViewModel attributedTextForMessage:message fontSize:fontSize textColor:textColor]]; } else { _textModel = [[TGNeoLabelViewModel alloc] initWithText:text font:[UIFont systemFontOfSize:fontSize] color:textColor attributes:nil]; } _textModel.multiline = true; [self addSubmodel:_textModel]; } return self; } - (CGSize)layoutWithContainerSize:(CGSize)containerSize { CGSize contentContainerSize = [self contentContainerSizeWithContainerSize:containerSize]; CGSize headerSize = [self layoutHeaderModelsWithContainerSize:contentContainerSize]; CGFloat maxContentWidth = headerSize.width; CGFloat textTopOffset = headerSize.height; CGSize textSize = [_textModel contentSizeWithContainerSize:contentContainerSize]; _textModel.frame = CGRectMake(TGNeoBubbleMessageViewModelInsets.left, textTopOffset, textSize.width, textSize.height); if (textSize.width > maxContentWidth) maxContentWidth = textSize.width; CGSize contentSize = CGSizeZero; contentSize.width = maxContentWidth + TGNeoBubbleMessageViewModelInsets.left + TGNeoBubbleMessageViewModelInsets.right; contentSize.height = CGRectGetMaxY(_textModel.frame) + TGNeoBubbleMessageViewModelInsets.bottom; [super layoutWithContainerSize:contentSize]; return contentSize; } @end