| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276 |
- //
- // TCLivePusherInfo.m
- // TCLVBIMDemo
- //
- // Created by lynxzhang on 16/8/3.
- // Copyright © 2016年 tencent. All rights reserved.
- //
- #import "TCLiveListCell.h"
- #import <UIImageView+WebCache.h>
- #import "UIImage+Additions.h"
- #import "TCUtil.h"
- #import "TCLiveListModel.h"
- #import "UIView+Additions.h"
- #import <sys/types.h>
- #import <sys/sysctl.h>
- @interface TCLiveListCell()
- {
- UIImageView *_headImageView;
- UIImageView *_bigPicView;
- UIImageView *_flagView;
- UILabel *_titleLabel;
- UILabel *_nameLabel;
- UILabel *_locationLabel;
- UILabel *_timeLable;
- UILabel *_reviewLabel;
- UIView *_userMsgView;
- UIView *_lineView;
- UIImage *_defaultImage;
- CGRect _titleRect;
- }
- @end
- @implementation TCLiveListCell
- - (instancetype)initWithFrame:(CGRect)frame
- {
- self = [super initWithFrame:frame];
- if (self) {
- [self initUIForUGC];
- }
- return self;
- }
- -(void)layoutSubviews{
- [super layoutSubviews];
- [self layoutForUGC];
- }
- - (void)prepareForReuse
- {
- [super prepareForReuse];
- [_headImageView sd_setImageWithURL:nil];
- [_bigPicView sd_setImageWithURL:nil];
- }
- - (void)initUIForUGC {
- for (UIView *view in self.contentView.subviews) {
- [view removeFromSuperview];
- }
-
- self.contentView.backgroundColor = [UIColor clearColor];
- //背景图
- _bigPicView = [[UIImageView alloc] initWithFrame:CGRectZero];
- _bigPicView.contentMode = UIViewContentModeScaleAspectFill;
- _bigPicView.clipsToBounds = YES;
- [self.contentView addSubview:_bigPicView];
-
- //左上角的审核状态
- _reviewLabel = [[UILabel alloc] initWithFrame:CGRectZero];
- [_reviewLabel setFont:[UIFont systemFontOfSize:14]];
- [_reviewLabel setTextColor:[UIColor whiteColor]];
- [self.contentView addSubview:_reviewLabel];
-
- //右上角的时间
- _timeLable = [[UILabel alloc] initWithFrame:CGRectZero];
- [_timeLable setFont:[UIFont systemFontOfSize:12]];
- [_timeLable setTextColor:UIColorFromRGB(0xFFFFFF)];
- [_timeLable setTextAlignment:NSTextAlignmentCenter];
- [self.contentView addSubview:_timeLable];
-
- //用户信息
- _userMsgView = [[UIView alloc] initWithFrame:CGRectZero];
- _userMsgView.backgroundColor = [UIColor clearColor];
- [self.contentView addSubview:_userMsgView];
-
- //头像
- _headImageView = [[UIImageView alloc] initWithFrame:CGRectZero];
- [_userMsgView addSubview:_headImageView];
-
- //用户名
- _nameLabel = [[UILabel alloc] initWithFrame:CGRectZero];
- [_nameLabel setFont:[UIFont systemFontOfSize:14]];
- [_nameLabel setTextColor:[UIColor whiteColor]];
- [_userMsgView addSubview:_nameLabel];
-
- if (_defaultImage == nil) {
- _defaultImage = [self scaleClipImage:[UIImage imageNamed:@"bg.jpg"] clipW: [UIScreen mainScreen].bounds.size.width * 2 clipH:274 * 2 ];
- }
- }
- - (void)layoutForUGC {
- //背景图
- _bigPicView.frame = CGRectMake(0 , 0.5, self.width, self.height - 1);
-
- //左上角的审核状态
- _reviewLabel.frame = CGRectMake(14, 5, 62, 20);
- //右上角的时间
- _timeLable.frame = CGRectMake(self.width - _timeLable.frame.size.width-5, 5, _timeLable.frame.size.width, 20);
-
- //用户信息
- _userMsgView.frame = CGRectMake(0, _bigPicView.bottom - 50, self.width, 50);
-
- //line
- _lineView.frame = CGRectMake(0, _userMsgView.height - 1, _userMsgView.width, 1);
-
- //头像
- _headImageView.frame = CGRectMake(14, 7.5, 35, 35);
- _headImageView.layer.cornerRadius = _headImageView.height * 0.5;
- _headImageView.layer.masksToBounds = YES;
- _headImageView.layer.borderWidth = 1;
- _headImageView.layer.borderColor = kClearColor.CGColor;
-
- //用户名
- _nameLabel.frame = CGRectMake(_headImageView.right + 12, 18, self.width - _headImageView.right - 12, 14);
- }
- - (void)setModel:(TCLiveInfo *)model {
- _model = model;
-
- NSStringCheck(_model.userinfo.headpic);
- [_headImageView sd_setImageWithURL:[NSURL URLWithString:[TCUtil transImageURL2HttpsURL:_model.userinfo.headpic]]
- placeholderImage:[UIImage imageNamed:@"face"]];
-
- if (_reviewLabel){
- if (_model.reviewStatus == 0) {
- _reviewLabel.text = NSLocalizedString(@"TCLiveListView.Uncensored", nil);
- }
- else if(_model.reviewStatus == 1){
- _reviewLabel.text = NSLocalizedString(@"TCLiveListView.Censored", nil);
- }
- else if(_model.reviewStatus == 2){
- _reviewLabel.text = NSLocalizedString(@"TCLiveListView.AdultContent", nil);
- }
- }
-
- NSStringCheck(_model.title);
- NSMutableAttributedString *title = [[NSMutableAttributedString alloc] initWithString:_model.title];
- [title addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:18] range:NSMakeRange(0, title.length)];
- _titleRect = [title boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, 15) options:NSStringDrawingUsesLineFragmentOrigin context:nil];
- if (_titleLabel) _titleLabel.attributedText = title;
-
-
- NSMutableString* name = [[NSMutableString alloc] initWithString:@""];
-
- NSStringCheck(_model.userinfo.nickname);
- if (0 == _model.userinfo.nickname.length) {
- [name appendString:_model.userid];
- }
- else {
- [name appendString:_model.userinfo.nickname];
- }
- if (_nameLabel) _nameLabel.text = name;
- if (_locationLabel) _locationLabel.text = _model.userinfo.location;
-
- //self.locationImageView.hidden = NO;
- if (_locationLabel && _locationLabel.text.length == 0) {
- _locationLabel.text = NSLocalizedString(@"TCLiveListCell.HideLocation", nil);
- }
-
- __weak typeof(_bigPicView) weakPicView = _bigPicView;
- [_bigPicView sd_setImageWithURL:[NSURL URLWithString:[TCUtil transImageURL2HttpsURL:model.userinfo.frontcover]] placeholderImage:_defaultImage completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
- // UIImage *newImage = [self scaleClipImage:image clipW:_bigPicView.width clipH:_bigPicView.height];
- if (image != nil) {
- weakPicView.image = image;
- model.userinfo.frontcoverImage = image;
- }
- }];
-
- if (_flagView) {
- _flagView.image = [UIImage imageNamed:@"playback"];
- }
-
- if (_timeLable) {
- [self setTimeLable:_model.timestamp];
- }
-
- [self layoutForUGC];
- }
- -(TCLiveInfo *)model{
- _model.userinfo.frontcoverImage = _bigPicView.image;
- return _model;
- }
- -(UIImage *)scaleClipImage:(UIImage *)image clipW:(CGFloat)clipW clipH:(CGFloat)clipH{
- UIImage *newImage = nil;
- if (image != nil) {
- if (image.size.width >= clipW && image.size.height >= clipH) {
- newImage = [self clipImage:image inRect:CGRectMake((image.size.width - clipW)/2, (image.size.height - clipH)/2, clipW,clipH)];
- }else{
- CGFloat widthRatio = clipW / image.size.width;
- CGFloat heightRatio = clipH / image.size.height;
- CGFloat imageNewHeight = 0;
- CGFloat imageNewWidth = 0;
- UIImage *scaleImage = nil;
- if (widthRatio < heightRatio) {
- imageNewHeight = clipH;
- imageNewWidth = imageNewHeight * image.size.width / image.size.height;
- scaleImage = [self scaleImage:image scaleToSize:CGSizeMake(imageNewWidth, imageNewHeight)];
- }else{
- imageNewWidth = clipW;
- imageNewHeight = imageNewWidth * image.size.height / image.size.width;
- scaleImage = [self scaleImage:image scaleToSize:CGSizeMake(imageNewWidth, imageNewHeight)];
- }
- newImage = [self clipImage:image inRect:CGRectMake((scaleImage.size.width - clipW)/2, (scaleImage.size.height - clipH)/2, clipW,clipH)];
- }
- }
- return newImage;
- }
- /**
- *缩放图片
- */
- -(UIImage*)scaleImage:(UIImage *)image scaleToSize:(CGSize)size{
- UIGraphicsBeginImageContext(size);
- [image drawInRect:CGRectMake(0, 0, size.width, size.height)];
- UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();
- UIGraphicsEndImageContext();
- return scaledImage;
- }
- /**
- *裁剪图片
- */
- -(UIImage *)clipImage:(UIImage *)image inRect:(CGRect)rect{
- CGImageRef sourceImageRef = [image CGImage];
- CGImageRef newImageRef = CGImageCreateWithImageInRect(sourceImageRef, rect);
- UIImage *newImage = [UIImage imageWithCGImage:newImageRef];
- CGImageRelease(newImageRef);
- return newImage;
- }
- - (NSString *)localizedNumber:(int)number key:(NSString *)key {
- if (number > 1) {
- key = [key stringByAppendingString:@"Plur"];
- }
- return [[NSString alloc] initWithFormat:NSLocalizedString(key, nil), number];
- }
- - (void)setTimeLable:(int)timestamp {
- NSString *timeStr = NSLocalizedString(@"TCLiveListCell.TimeSecondsAgo", nil);
- if (timestamp == 0) {
- timeStr = @"";
- } else {
- int interval = [[NSDate date] timeIntervalSince1970] - timestamp;
-
- if (interval >= 60 && interval < 3600) {
- timeStr = [self localizedNumber:interval/60 key:@"TCLiveListCell.TimeMinutesAgo"];
- } else if (interval >= 3600 && interval < 60*60*24) {
- timeStr = [self localizedNumber:interval/3600 key:@"TCLiveListCell.TimeHoursAgo"];
- } else if (interval >= 60*60*24 && interval < 60*60*24*365) {
- timeStr = [self localizedNumber:interval/3600/24 key:@"TCLiveListCell.TimeDaysAgo"];
- } else if (interval >= 60*60*24*365) {
- timeStr = [[NSString alloc] initWithFormat:NSLocalizedString(@"TCLiveListCell.TimeLongAgo", nil)];
- }
- }
- _timeLable.text = timeStr;
- [_timeLable sizeToFit];
- }
- @end
|