// 到这步,想要实现在自定义的每个tablecell上添加一个toolbar的view,上面放着三个lable(点赞,评论,转发的数量),所以要再自定义一个view类
// 自定义的 LYWeiboToolbarView 在xib里右侧功能区点击第一个图标把Use Autolayout自动布局点空取消,之后在尺寸的一栏给距离俯视图的下边缘加约束,距离为0.(实现toolbar跟随cell的高度变换位置,始终在下边缘)
//cell上添加工具栏
// 创建自定义通过xib布局的对象,用下面的方法创建
LYWeiboToolbarView *tv = [[[NSBundlemainBundle]loadNibNamed:@"LYWeiboToolbarView" owner:self options:nil] lastObject];
// autoreseing布局,只是实现子控件的每次初始位置,这里给设置向下移5个像素
tv.center = CGPointMake(tv.center.x, tv.center.y+5);
//在这里要把LYWeibo数据传递给子控件tv,tv拿到后要显示转发,评论,点赞数量,但是LYWeibo的数据的时间(具体的时间是在controller里赋值LYWeibo的时候)是在下面的setWeibo方法里拿到的
[self.contentView addSubview:tv];
// 设置 contentView 层的颜色为白色,区分整体cell的灰色,分割效果
self.contentView.backgroundColor = [UIColor whiteColor];
self.backgroundColor = [UIColor lightGrayColor];
self.toolBarView = tv;
}
return self;
}
// 重写属性weibo的set方法
-(void)setWeibo:(LYWeibo *)weibo{
_weibo = weibo;
self.nameLabel.text = weibo.user.name;
self.timeLabel.text = weibo.created_at;
[self.headIV setImageWithURL:weibo.user.avatar_large];
self.sourceLabel.text = weibo.source;
//告诉bar显示的数据是什么(转发。。。)
self.toolBarView.weibo = weibo;
}
//控件显示之前会调用 数据准备就绪 修改自定义控件布局 可以写在次方法中
-(void)layoutSubviews{
[super layoutSubviews];
// 让ContentView高度减10 做分割线
self.contentView.frame = CGRectMake(0, 0, self.bounds.size.width, self.bounds.size.height-10);
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
}
// ---------------------- 功能分区 -----------------------------
// 获取到的时间格式:
//@"Wed Feb 24 16:03:33 +0800 2016"
//星期几 月份 号 时:分:秒 时区 年
// ---------------------- 功能分区 -----------------------------
// 每次刷新微博的时候,显示的时间是根据发送的时间而定的,所以这里不能重写set方法,需要重写他的get方法
-(NSString *)created_at{
// 获取微博发送时间
// 把获得的字符串时间 转成 时间戳
//EEE(星期) MMM(月份)dd(天) HH小时 mm分钟 ss秒 Z时区 yyyy年
// NSDateFormatter 是一个时间互相转换的类
NSDateFormatter *format = [[NSDateFormatter alloc]init];
// 格式化时间的格式,按照这种格式的时间把时间转换成data
format.dateFormat = @"EEE MMM dd HH:mm:ss Z yyyy";
//设置地区
format.locale = [[NSLocale alloc]initWithLocaleIdentifier:@"en_US"];
// 把时间数据转换成data数据
NSDate *weiboDate = [format dateFromString:_created_at];
//获取当前时间
NSDate *nowDate = [NSDate new];
long nowTime = [nowDate timeIntervalSince1970];
long weiboTime = [weiboDate timeIntervalSince1970];
long time = nowTime-weiboTime;
if (time<60) {//一分钟内 显示刚刚
return @"刚刚";
}else if (time>60&&time<=3600){
return [NSString stringWithFormat:@"%d分钟前",(int)time/60];
}else if (time>3600&&time<3600*24){
return [NSString stringWithFormat:@"%d小时前",(int)time/3600];
}else{//直接显示日期
// 按照MM月dd的格式把微博data时间转换成显示的的时间
format.dateFormat = @"MM月dd";
return [format stringFromDate:weiboDate];
}
}