热更新demo

TopicAnwserCell.m 15KB

    // // 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