澎湃iPad上线版本

cntentImageCell.m 5.0KB

    // // cntentImageCell.m // ThePaperDemo // // Created by scar1900 on 14/11/5. // Copyright (c) 2014年 scar1900. All rights reserved. // #import "cntentImageCell.h" #import "AsyncImageView.h" @interface cntentImageCell(){ CGSize imageSize; CGFloat descHeight; } @property(nonatomic, strong)AsyncImageView *imgView; @property(nonatomic, strong)RTLabel *destLabel; @end @implementation cntentImageCell @synthesize imageBO = _imageBO; @synthesize delegate; - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; if (self) { self.backgroundColor = [UIColor clearColor]; self.selectionStyle = UITableViewCellSelectionStyleNone; [self.contentView addSubview:self.imgView]; [self.contentView addSubview:self.destLabel]; UITapGestureRecognizer *imageTap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(clickImageHandler:)]; imageTap.numberOfTapsRequired = 1; [self.contentView addGestureRecognizer:imageTap]; [self.imgView makeConstraints:^(MASConstraintMaker *make) { make.centerX.equalTo(self.contentView.centerX); make.top.equalTo(self.contentView.top); make.width.mas_equalTo(imageSize.width); make.height.mas_equalTo(imageSize.height); }]; [self.destLabel makeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(self.contentView.left).offset(10); make.width.mas_equalTo(400); make.top.equalTo(self.imgView.bottom).offset(5); make.height.equalTo(@0); }]; } return self; } - (void)clickImageHandler:(UITapGestureRecognizer*)tap { if ([self.delegate respondsToSelector:@selector(clickImage:)]) { [self.delegate clickImage:self.imageBO]; } } - (void)setImageBO:(imageObjectBO *)data { _imageBO = data; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ imageSize = CGSizeMake([self.imageBO.width floatValue], [self.imageBO.height floatValue]); dispatch_async(dispatch_get_main_queue(), ^{ self.imgView.imageUrl = data.url; if (isBlankString(data.desc)) { self.destLabel.hidden = YES; descHeight = 0; self.destLabel.text = @""; }else { self.destLabel.hidden = NO; descHeight = returnTextHeightWithRTLabel(data.desc, 1320/2, appFont(imageDescFontSize, NO), 5); self.destLabel.text = data.desc; } [self setLayoutSubviews]; }); }); } - (AsyncImageView*)imgView { if (!_imgView) { _imgView = [[AsyncImageView alloc]initWithFrame:CGRectZero]; _imgView.backgroundColor = [UIColor clearColor]; _imgView.hidden = YES; } return _imgView; } - (RTLabel*)destLabel { if (!_destLabel) { _destLabel = [[RTLabel alloc]initWithFrame:CGRectZero]; _destLabel.backgroundColor = [UIColor clearColor]; _destLabel.textAlignment = RTTextAlignmentCenter; _destLabel.textColor = [UIColor colorWithHexString:ImageSpeakDesc]; _destLabel.lineBreakMode = RTTextLineBreakModeWordWrapping; _destLabel.lineSpacing = 5; /** * bug:5181(【适配性】新闻详情页,4s 5c强关系下方的文字和会滚动条重叠) */ } _destLabel.font = appFont(imageDescFontSize, NO); return _destLabel; } - (void)setLayoutSubviews { CGFloat padding = 0; UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation]; if (orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight) { padding = 125; } CGSize size = CGSizeZero; if (imageSize.width > 660) { size = CGSizeMake(660, imageSize.height*660/imageSize.width); }else { size = CGSizeMake([self.imageBO.width floatValue]*1.1, [self.imageBO.height floatValue]*1.1); } [self.imgView remakeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(self.contentView.left).equalTo(1320/4-size.width/2+padding); make.top.equalTo(self.contentView.top); make.width.mas_equalTo(size.width); make.height.mas_equalTo(size.height); }]; [self.destLabel remakeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(self.contentView.left).equalTo(padding); make.width.mas_equalTo(1320/2); make.top.equalTo(self.imgView.bottom).offset(5); make.height.mas_equalTo(descHeight); }]; if (self.imgView.hidden) { self.imgView.hidden = NO; } } - (void)awakeFromNib { // Initialization code } - (void)setSelected:(BOOL)selected animated:(BOOL)animated { [super setSelected:selected animated:animated]; // Configure the view for the selected state } @end