ifish/Ifish/UMCommunity/UMCommunitySDK/UMCommunityUI/Common/InformSystem/UMComChatRecodTableViewCell.m

159 lines
7.0 KiB
Objective-C

//
// UMComChatRecodTableViewCell.m
// UMCommunity
//
// Created by umeng on 16/3/4.
// Copyright © 2016年 Umeng. All rights reserved.
//
#import "UMComChatRecodTableViewCell.h"
#import <UMComDataStorage/UMComUser.h>
#import "UMComCommentEditView.h"
#import <UMCommunitySDK/UMComSession.h>
#import "UMComImageView.h"
#import "UMComMutiStyleTextView.h"
#import "UMComResouceDefines.h"
#import <UMComDataStorage/UMComImageUrl.h>
#import <UMComDataStorage/UMComPrivateMessage.h>
#import <UMComFoundation/UMComKit+Color.h>
@implementation UMComChatRecodTableViewCell
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
self.bgImageView = [[UIImageView alloc]init];
[self.contentView addSubview:self.bgImageView];
self.iconImaeView = [[[UMComImageView imageViewClassName] alloc]init];
self.iconImaeView.userInteractionEnabled = YES;
self.iconImaeView.clipsToBounds = YES;
[self.contentView addSubview:self.iconImaeView];
self.chatContentView = [[UMComMutiStyleTextView alloc]init];
self.chatContentView.backgroundColor = [UIColor clearColor];
[self.bgImageView addSubview:self.chatContentView];
self.dateLabel = [[UILabel alloc]init];
self.dateLabel.backgroundColor = [UIColor clearColor];
self.dateLabel.font = UMComFontNotoSansLightWithSafeSize(UMCom_Forum_Chat_DateString_Font);
self.dateLabel.textColor = UMComColorWithHexString(UMCom_Forum_Chat_Date_TextColor);
[self.contentView addSubview:self.dateLabel];
self.contentView.backgroundColor = UMComColorWithHexString(UMCom_Forum_Chat_Cell_BgColor);
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(clickOnUser:)];
[self.iconImaeView addGestureRecognizer:tap];
self.selectionStyle = UITableViewCellSelectionStyleNone;
}
return self;
}
- (void)clickOnUser:(id)sender
{
if (_clickOnUser) {
_clickOnUser();
}
}
//- (void)clickOnCell:()
- (void)reloadTabelViewCellWithMessage:(UMComPrivateMessage *)privateMessage mutiText:(UMComMutiText *)mutiText cellSize:(CGSize)size
{
[self.iconImaeView setImageURL:privateMessage.creator.icon_url.small_url_string placeHolderImage:UMComImageWithImageName(@"um_forum_user_smile_gray")];
if (privateMessage.create_time) {
self.dateLabel.text = createTimeString(privateMessage.create_time);
}else{
self.dateLabel.text = [[NSDate date] description];
}
[self.chatContentView setMutiStyleTextViewWithMutiText:mutiText];
}
@end
@implementation UMComChatReceivedTableViewCell
{
CGFloat imageLeft;
CGFloat imageWidth;
CGFloat dateLabelHeight;
}
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
imageLeft = UMCom_Forum_Chat_Icon_Edge;
imageWidth = UMCom_Forum_Chat_Icon_Width;
dateLabelHeight = UMCom_Forum_Chat_DateLabel_Height;
UIImage *resizableImage = [UMComImageWithImageName(@"um_forum_chat_bg_white") resizableImageWithCapInsets:UIEdgeInsetsMake(30, 20, 5, 20) resizingMode:UIImageResizingModeStretch];
self.bgImageView.image = resizableImage;
self.dateLabel.textAlignment = NSTextAlignmentLeft;
}
return self;
}
- (void)reloadTabelViewCellWithMessage:(UMComPrivateMessage *)privateMessage mutiText:(UMComMutiText *)mutiText cellSize:(CGSize)size
{
[super reloadTabelViewCellWithMessage:privateMessage mutiText:mutiText cellSize:size];
self.iconImaeView.frame = CGRectMake(imageLeft, imageLeft, imageWidth, imageWidth);
self.iconImaeView.layer.cornerRadius = self.iconImaeView.bounds.size.height/2;
CGFloat commonOriginX = imageLeft + imageLeft/2 + imageWidth;
CGFloat bgChatImageWidth = mutiText.textSize.width + UMCom_Forum_Chat_Message_ShortEdge * 2 + 2;
CGFloat bgImageHeight = mutiText.textSize.height + UMCom_Forum_Chat_Message_ShortEdge * 2;
self.bgImageView.frame = CGRectMake(commonOriginX, imageLeft, bgChatImageWidth, bgImageHeight);
self.chatContentView.frame = CGRectMake(UMCom_Forum_Chat_Message_ShortEdge+3, UMCom_Forum_Chat_Message_ShortEdge, mutiText.textSize.width, mutiText.textSize.height);
self.dateLabel.frame = CGRectMake(self.bgImageView.frame.origin.x + UMCom_Forum_Chat_Message_ShortEdge, self.bgImageView.frame.origin.y + bgImageHeight + UMCom_Forum_Chat_DateMessage_Space, size.width-commonOriginX, dateLabelHeight);
}
@end
@implementation UMComChatSendTableViewCell
{
CGFloat imageRight;
CGFloat imageWidth;
CGFloat dateLabelHeight;
}
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
imageRight = UMCom_Forum_Chat_Icon_Edge;
imageWidth = UMCom_Forum_Chat_Icon_Width;
dateLabelHeight = UMCom_Forum_Chat_DateLabel_Height;
self.dateLabel.textAlignment = NSTextAlignmentRight;
UIImage *resizableImage = [UMComImageWithImageName(@"um_forum_chat_bg_blue") resizableImageWithCapInsets:UIEdgeInsetsMake(30, 20, 5, 20) resizingMode:UIImageResizingModeStretch];
self.bgImageView.image = resizableImage;
self.dateLabel.textAlignment = NSTextAlignmentRight;
}
return self;
}
- (void)reloadTabelViewCellWithMessage:(UMComPrivateMessage *)privateMessage mutiText:(UMComMutiText *)mutiText cellSize:(CGSize)size
{
[super reloadTabelViewCellWithMessage:privateMessage mutiText:mutiText cellSize:size];
self.iconImaeView.frame = CGRectMake(size.width-imageRight-imageWidth, imageRight, imageWidth, imageWidth);
self.iconImaeView.layer.cornerRadius = self.iconImaeView.bounds.size.height/2;
CGFloat bgChatImageWidth = mutiText.textSize.width + UMCom_Forum_Chat_Message_ShortEdge*2 + 2;
CGFloat bgImageHeight = mutiText.textSize.height + UMCom_Forum_Chat_Message_ShortEdge * 2;
CGFloat bgImageRigtEdge = imageRight+ imageRight/2 + imageWidth;
self.bgImageView.frame = CGRectMake(size.width - bgChatImageWidth - bgImageRigtEdge, UMCom_Forum_Chat_Icon_Edge, bgChatImageWidth, bgImageHeight);
self.chatContentView.frame = CGRectMake(UMCom_Forum_Chat_Message_ShortEdge, UMCom_Forum_Chat_Message_ShortEdge, mutiText.textSize.width, mutiText.textSize.height);
CGRect dateFrame = self.dateLabel.frame;
CGFloat rightEdge = UMCom_Forum_Chat_Message_ShortEdge + self.iconImaeView.frame.size.width + imageRight*2;
dateFrame.size.width = size.width - UMCom_Forum_Chat_Message_LongEdge - rightEdge;
dateFrame.origin.x = size.width - rightEdge - dateFrame.size.width;
dateFrame.size.height = UMCom_Forum_Chat_DateLabel_Height;
dateFrame.origin.y = self.bgImageView.frame.origin.y + bgImageHeight + UMCom_Forum_Chat_DateMessage_Space;
self.dateLabel.frame = dateFrame;
}
@end