iOS:collectionView刷新数据,label和图片出现重叠的情况解决方案

我遇到这种情况的情景是这样的。

开始的最初界面


点击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];


你可能感兴趣的:(iOS:collectionView刷新数据,label和图片出现重叠的情况解决方案)