|
//
// TopicAnwserCell.m
// ThePaperBase
//
// Created by zhousan on 15/8/12.
// Copyright (c) 2015年 scar1900. All rights reserved.
//
#import "TopicAnwserCell.h"
#import "SDWebImageManager.h"
#import "UIImage+wiRoundedRectImage.h"
@interface TopicAnwserCell ()
@end
@implementation TopicAnwserCell
@synthesize commentBO;
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
[self.OkButton setImageEdgeInsets:UIEdgeInsetsMake(0, 5, 15, 5)];
[self.OkButton subLayoutSubViews];
self.isFirst = NO;
_spaceView = [[UIView alloc] initWithFrame:CGRectZero];
_spaceView.backgroundColor = [UIColor colorWithHexString:CELLBACKCOLOR];
[self.backView addSubview:_spaceView];
_spaceView.hidden = YES;
}
return self;
}
- (void)setCommentBO:(commentObjectVO *)data {
commentBO = data;
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
userBO *user = setJsonDicToDataModel(data.userInfo, [userBO class]);
NSString *nameStr = user.sname?[NSString stringWithFormat:@"%@:",user.sname]:@"";
NSString *praiseNum = data.praiseTimes;
dispatch_async(dispatch_get_main_queue(), ^{
if (isBlankString(user.pic)) {
self.answerIcon.image = Image(@"login/loginIcon_s.png");
}else {
if ([[TPUserDefault instance].readModeStr intValue] == imageMode) {
[self updateUserHeadImage:user];
}else if ([[TPUserDefault instance].readModeStr intValue] == textMode) {
self.answerIcon.image = Image(@"login/loginIcon_s.png");
}else {
if ([Remote IsEnableWIFI]) {
[self updateUserHeadImage:user];
}else {
self.answerIcon.image = Image(@"login/loginIcon_s.png");
}
}
}
if(self.indexPath.row == 1 && [data.objectType isEqualToString:@"3"]){
//话题问答详情页,第一个楼主回答的蓝色不对,应该是深蓝色(bug:4266)
TPLOG(@"%ld",(long)self.indexPath.row);
self.isFirst = YES;
//【需求】话题:话题的问答详情页(bug:4315)
if ([_topicHostId isEqualToString:user.userId]) {
self.aswerContentLabel.textColor = [UIColor colorWithHexString:ANSWERBLUECOLOR];
}else{
self.aswerContentLabel.textColor = [UIColor colorWithHexString:TextGray];
}
}else{
self.isFirst = NO;
self.aswerContentLabel.textColor = [UIColor colorWithHexString:TextGray];
}
if ([_topicHostId isEqualToString:user.userId]) {
self.hostLabel.hidden = NO;
}else {
self.hostLabel.hidden = YES;
}
if ([user.isAuth integerValue] ==1) {//认证用户提问或回答,头像不显示加”V“(bug:4116)
self.verifyTag.hidden = NO;
}else{
self.verifyTag.hidden = YES;
}
self.anserNameLabel.text = nameStr;
self.aswerContentLabel.text = data.content;
self.timeLabel.text = data.pubTime;
if (!isBlankString(praiseNum)) {
self.OkButton.text = praiseNum;
}
if (data.isPraised && [data.isPraised intValue] == 1) {
[self.OkButton setSelected:YES];
}else {
[self.OkButton setSelected:NO];
}
[self reLayoutSubViews];
});
});
self.anserNameLabel.text = data.userName?[NSString stringWithFormat:@"%@:",data.userName]:@"";
self.aswerContentLabel.text = data?data.content:@"";
self.OkButton.text = data.praiseTimes;
if (data.quoteInfo && data.quoteInfo.allKeys.count>0) {
NSDictionary *dic = data.quoteInfo;
commentObjectVO *quoBO = setJsonDicToDataModel(dic, [commentObjectVO class]);
self.commentBack.hidden = NO;
self.quoNameLable.hidden = NO;
self.triangleImg.hidden = NO;
self.quoNameLable.text =[NSString stringWithFormat:@"%@:",quoBO.userName];
self.quoContentLabel.hidden = NO;
self.quoContentLabel.text = quoBO.content;
self.quoContentHeight = returnTextHeightWithRTLabel(quoBO.content, rect_screen.size.width-20-16, appFont(13, NO), 5);
if (self.quoContentHeight <= getLineHeightWithCountAndFontWidth(2, 10, TEXT_FOUR_LEVELSIZE)) {
self.commentBack.userInteractionEnabled = NO;
}else {
self.commentBack.userInteractionEnabled = YES;
}
if (!data.isQuoExpand || [data.isQuoExpand intValue] == 0) {
if (self.quoContentHeight > getLineHeightWithCountAndFontWidth(2, 10, TEXT_FOUR_LEVELSIZE)) {
self.diandiandianLabel.hidden = NO;
}else {
self.diandiandianLabel.hidden = YES;
}
self.quoContentHeight = self.quoContentHeight>getLineHeightWithCountAndFontWidth(2, 10, TEXT_FOUR_LEVELSIZE)?getLineHeightWithCountAndFontWidth(2, 10, TEXT_FOUR_LEVELSIZE):self.quoContentHeight;
}
}else {
self.commentBack.hidden = YES;
self.quoNameLable.hidden = YES;
self.quoContentLabel.hidden = YES;
self.triangleImg.hidden = YES;
}
[self reLayoutSubViews];
}
- (void)updateUserHeadImage:(userBO*)user{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
SDWebImageManager *imageManager = [SDWebImageManager sharedManager];
[imageManager downloadImageWithURL:[NSURL URLWithString:user.pic]
options:SDWebImageLowPriority
progress:^(NSInteger receivedSize, NSInteger expectedSize) {
} completed:^(UIImage *img, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
// UIImage *roundImage = [UIImage circleImage:img withParam:28];
dispatch_async(dispatch_get_main_queue(), ^{
self.answerIcon.image = img;
});
}];
});
}
- (void)subLayoutSubViews {
[self.backView makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.left);
make.top.equalTo(self.top);
make.width.equalTo(self.width);
make.height.equalTo(self.height);
}];
[self.answerIcon makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.backView).offset(10);
make.top.equalTo(self.backView).offset(7);
make.width.mas_equalTo(28);
make.height.mas_equalTo(28);
}];
[self.iconBack makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.answerIcon);
}];
[self.iconButton makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.answerIcon);
}];
[self.verifyTag makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.backView.left).offset(28);
make.top.equalTo(self.backView.top).offset(28);
make.height.mas_equalTo(12);
make.width.mas_equalTo(12);
}];
[self.anserNameLabel makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.backView.top).offset(9);
make.left.equalTo(self.answerIcon.right).offset(10);
make.width.mas_equalTo(rect_screen.size.width/2);
make.height.mas_equalTo(12);
}];
[self.timeImg makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.answerIcon.right).offset(10);
make.top.equalTo(self.anserNameLabel.bottom).offset(6);
make.height.mas_equalTo(10);
make.width.mas_equalTo(10);
}];
[self.timeLabel makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.timeImg.right).offset(5);
make.top.equalTo(self.anserNameLabel.bottom).offset(6);
make.height.mas_equalTo(9);
make.width.mas_equalTo(rect_screen.size.width/2);
}];
[self.OkButton makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.backView.right).offset(-40);
make.top.equalTo(self.anserNameLabel.top).offset(-2);
make.width.mas_equalTo(30);
make.height.mas_equalTo(35);
}];
[self.menuButton makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.aswerContentLabel);
}];
[self.aswerContentLabel makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.backView.left).offset(10);
make.right.equalTo(self.backView.right).offset(-10);
make.top.equalTo(self.timeLabel.bottom).offset(10);
make.height.mas_equalTo(0);
}];
[self.expandBtn makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.backView.left);
make.right.equalTo(self.backView.right);
make.top.equalTo(self.aswerContentLabel.bottom);
make.height.mas_equalTo(25);
}];
[self.commentBack makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.aswerContentLabel.left);
make.top.equalTo(self.aswerContentLabel.bottom).offset(10);
make.width.equalTo(self.aswerContentLabel.width);
make.height.mas_equalTo(0);
}];
[self.quoNameLable makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.commentBack.left).offset(10);
make.top.equalTo(self.commentBack.top).offset(10);
make.right.mas_equalTo(self.commentBack.right).offset(-15);
make.height.mas_equalTo(25/2);
}];
[self.backView addSubview:self.triangleImg];
[self.triangleImg makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.commentBack.left).offset(55/2);
make.width.equalTo(@7);
make.top.equalTo(self.commentBack.top).offset(-6);
make.height.equalTo(@7);
}];
[self.hostLabel makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.anserNameLabel.right).offset(5);
make.top.equalTo(self.anserNameLabel.top);
make.width.mas_equalTo(27);
make.height.mas_equalTo(12);
}];
[self.lineView makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.backView.left).offset(10);
make.right.equalTo(self.backView.right).offset(-10);
make.top.equalTo(self.backView.bottom).offset(-6);
make.height.mas_equalTo(1);
}];
}
- (void)reLayoutSubViews {
__weak typeof(self) weakSelf = self;
CGFloat nameWidth = returnTextWidthWithRTLabel(self.anserNameLabel.text, 12, appFont(11, NO), 0);
[self.anserNameLabel remakeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(weakSelf.backView.top).offset(9);
make.left.mas_equalTo(weakSelf.answerIcon.right).offset(10);
make.width.mas_equalTo(nameWidth+40);
make.height.mas_equalTo(12);
}];
CGFloat answerContentHeight = self.aswerContentLabel.optimumSize.height;
CGFloat addPx = 0;
if (answerContentHeight > getLineHeightWithCountAndFontWidth(4, 10, TEXT_FOUR_LEVELSIZE)) {
self.expandBtn.hidden = NO;
addPx = 24;
}else self.expandBtn.hidden = YES;
if (!self.commentBO.isExpand || [self.commentBO.isExpand intValue] == 0) {
answerContentHeight = answerContentHeight>getLineHeightWithCountAndFontWidth(4, 10, TEXT_FOUR_LEVELSIZE)?getLineHeightWithCountAndFontWidth(4, 10, TEXT_FOUR_LEVELSIZE):answerContentHeight;
[self.expandBtn setImage:Image(@"detailPage/expandArrow.png") forState:UIControlStateNormal];
}else {
[self.expandBtn setImage:Image(@"detailPage/expandArrowUp.png") forState:UIControlStateNormal];
}
[self.aswerContentLabel remakeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(weakSelf.backView.left).offset(10);
make.right.mas_equalTo(weakSelf.backView.right).offset(-10);
make.top.mas_equalTo(weakSelf.timeLabel.bottom).offset(10);
make.height.mas_equalTo(answerContentHeight);
}];
if (self.isFirst && self.needSpace == YES) {
self.spaceView.hidden = NO;
self.lineView.hidden = YES;
}else {
self.spaceView.hidden = YES;
self.lineView.hidden = NO;
}
[self.spaceView makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.backView);
make.bottom.equalTo(self.backView);
make.right.equalTo(self.backView);
make.height.mas_equalTo(10);
}];
CGFloat backHeight = 0;
CGFloat tmp = 0;
if (!self.commentBO.isQuoExpand || [self.commentBO.isQuoExpand intValue] == 0) {
CGFloat labeHeight = returnTextHeightWithRTLabel(self.quoContentLabel.text, rect_screen.size.width-20-16, appFont(13, NO), 5);
if (labeHeight > getLineHeightWithCountAndFontWidth(2, 10, TEXT_FOUR_LEVELSIZE)) {
tmp = 15;
}
backHeight = labeHeight > getLineHeightWithCountAndFontWidth(2, 10, TEXT_FOUR_LEVELSIZE)?(getLineHeightWithCountAndFontWidth(2, 10, TEXT_FOUR_LEVELSIZE)+tmp):labeHeight;
backHeight += 35;
}else {
CGFloat labeHeight = returnTextHeightWithRTLabel(self.quoContentLabel.text, rect_screen.size.width-20-16, appFont(13, NO), 5);
backHeight = labeHeight + 35;
tmp = 0;
self.diandiandianLabel.hidden = YES;
}
[self.commentBack remakeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(weakSelf.aswerContentLabel.left);
make.top.mas_equalTo(weakSelf.aswerContentLabel.bottom).offset(10+addPx);
make.width.mas_equalTo(weakSelf.aswerContentLabel.width);
make.height.mas_equalTo(backHeight);
}];
[self.diandiandianLabel makeConstraints:^(MASConstraintMaker *make) {
make.bottom.equalTo(self.commentBack).offset(-5);
make.centerX.equalTo(self.backView);
make.size.mas_equalTo(CGSizeMake(100, 15));
}];
[self.quoContentLabel remakeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(weakSelf.commentBack.left).offset(8);
make.top.mas_equalTo(weakSelf.quoNameLable.bottom).offset(5);
make.right.mas_equalTo(weakSelf.commentBack.right).offset(-8);
make.bottom.equalTo(weakSelf.commentBack.bottom).offset(-3-tmp);
}];
}
@end
|