| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- //
- // FaceMessageCell.m
- // UIKit
- //
- // Created by annidyfeng on 2019/5/30.
- // Copyright © 2023 Tencent. All rights reserved.
- //
- #import "TUIFaceMessageCell.h"
- #import <TIMCommon/TIMDefine.h>
- @interface TUIFaceMessageCell ()
- @end
- @implementation TUIFaceMessageCell
- - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
- self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
- if (self) {
- _face = [[UIImageView alloc] init];
- _face.contentMode = UIViewContentModeScaleAspectFit;
- [self.container addSubview:_face];
- _face.mm_fill();
- _face.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
- }
- return self;
- }
- - (void)layoutSubviews {
- [super layoutSubviews];
- }
- + (BOOL)requiresConstraintBasedLayout {
- return YES;
- }
- // this is Apple's recommended place for adding/updating constraints
- - (void)updateConstraints {
- [super updateConstraints];
-
- CGFloat topMargin = 0;
- CGFloat height = self.container.mm_h;
- if (self.messageData.messageContainerAppendSize.height > 0) {
- topMargin = 10;
- CGFloat tagViewTopPadding = 6;
- height = self.container.mm_h - topMargin - self.messageData.messageContainerAppendSize.height - tagViewTopPadding;
- self.bubbleView.hidden = NO;
- } else {
- self.bubbleView.hidden = YES;
- }
- [self.face mas_remakeConstraints:^(MASConstraintMaker *make) {
- make.height.mas_equalTo(height);
- make.centerX.mas_equalTo(self.container.mas_centerX);
- make.top.mas_equalTo(topMargin);
- make.width.mas_equalTo(self.container);
- }];
-
-
- }
- - (void)fillWithData:(TUIFaceMessageCellData *)data {
- // set data
- [super fillWithData:data];
- self.faceData = data;
- UIImage *image = [[TUIImageCache sharedInstance] getFaceFromCache:data.path];
- if (!image) {
- image = [UIImage imageWithContentsOfFile:TUIChatFaceImagePath(@"ic_unknown_image")];
- }
- _face.image = image;
-
- // tell constraints they need updating
- [self setNeedsUpdateConstraints];
- // update constraints now so we can animate the change
- [self updateConstraintsIfNeeded];
- [self layoutIfNeeded];
- }
- #pragma mark - TUIMessageCellProtocol
- + (CGSize)getContentSize:(TUIMessageCellData *)data {
- NSAssert([data isKindOfClass:TUIFaceMessageCellData.class], @"data must be kind of TUIFaceMessageCellData");
- TUIFaceMessageCellData *faceCellData = (TUIFaceMessageCellData *)data;
- UIImage *image = [[TUIImageCache sharedInstance] getFaceFromCache:faceCellData.path];
- if (!image) {
- image = [UIImage imageWithContentsOfFile:TUIChatFaceImagePath(@"ic_unknown_image")];
- }
- CGFloat imageHeight = image.size.height;
- CGFloat imageWidth = image.size.width;
- if (imageHeight > TFaceMessageCell_Image_Height_Max) {
- imageHeight = TFaceMessageCell_Image_Height_Max;
- imageWidth = image.size.width / image.size.height * imageHeight;
- }
- if (imageWidth > TFaceMessageCell_Image_Width_Max) {
- imageWidth = TFaceMessageCell_Image_Width_Max;
- imageHeight = image.size.height / image.size.width * imageWidth;
- }
- return CGSizeMake(imageWidth, imageHeight);
- }
- @end
|