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