我遇到这种情况的情景是这样的。
开始的最初界面点击item刷新数据后出现下面的情况:
问题界面我有一个播放视频的页面,这个页面的最上方是avplayer的view播放层,下方是一个collectionview,collectionview的头部视图放置视频的简介文字。点击collectionview的每一个item,视频播放层久切换当前点击的视频以及头部视图切换文字简介。
我在collectionview头试图里的简介都是UIlable视图,上方也有分享、收藏、点赞、下载button,这些我都是在头部视图代码里单独[[UILable alloc]init]和[[UIButton alloc]init],然后添加到头视图里。
当我点击item,[collectionview reloadData]的时候,发现除了cell之外,其他的lable和button里的原有图片和原有文字,与新文字和图都进行了重叠,加厚。
解决方案:
问题原因:
我最初是在头部视图代码里单独[[UILable alloc]init]和[[UIButton alloc]init],添加视图的,导致每次刷新数据后重新alloc init一次,reloaddata一次就会出现重叠。
解决办法:
将这些button和lable、imageview的alloc init放在以下的初始化中:
-(instancetype)init{
self=[super init];
if (self) {
self.downloadBtn=[UIButton new];
self.goodBtn=[UIButton new];
self.collectBtn=[UIButton new];
self.shareBtn=[UIButton new];
self.sectionOneLable=[UILabel new];
self.sectionTwoLine=[UILabel new];
self.hotLableImage=[UIButton new];
}
return self;
}
然后在头视图里添加fram等属性和添加到父视图之中即可。这样刷新数据就不会出现重叠情况。
//这是分享、下载、点赞、收藏==按钮
//分享按钮
self.shareBtn.frame=CGRectMake(view.frame.size.width-40, 5, 40, 30);
[self.shareBtn setImage:[UIImage imageNamed:@"collection_share"] forState:UIControlStateNormal];
[self.shareBtn addTarget:self
action:@selector(showBottomNormalView) forControlEvents:UIControlEventTouchUpInside];
[view addSubview:self.shareBtn];
self.collectBtn.frame=CGRectMake(screen_width-40-40, 5, 40, 30);
//收藏按钮
[self.collectBtn setImage:[UIImage imageNamed:@"video_collection"] forState:UIControlStateNormal];
//collectBtn.backgroundColor=[UIColor orangeColor];
[view addSubview:self.collectBtn];
网友评论