iOS中collectionview的cell的复用--特殊情况
1、1.这是我之前的cell的代码:if (_monthModel.isFuture) { self.dayLabel.textColor=HexRGBAlpha(0xb7bec7, 1.0); //将来 }else if(_monthModel.isSelectedDay){ self.contentView.backgroundColor=HexRGBAlpha(0x5bbcf4,1.0); //今天 self.dayLabel.textColor=HexRGBAlpha(0xffffff, 1.0); //ok的 self.sleepCompleteLab.hidden=YES; //今天的日期不显示运动和睡眠进度 self.sportCompleteLab.hidden=YES; self.realCompletSleepLab.hidden=YES; self.realCompletSportLab.hidden=YES; }else{ if (_monthModel.hasRedFlag) { self.redImg.image=[UIImage imageNamed:@"img_biaoqian"]; } if (_monthModel.hasData) { self.sportCompleteLab.backgroundColor=HexRGBAlpha(0xb8f3e8, 1.0); self.realCompletSportLab.backgroundColor=HexRGBAlpha(0x4fe2ca, 1.0); if (_monthModel.degree>1.0) { _monthModel.degree=1.0; } self.realCompletSportLab.frame=CGRectMake(5, CGRectGetMaxY(self.dayLabel.frame)+5, (self.contentView.frame.size.width-5*2)*monthModel.degree, 5); [self bringSubviewToFront:self.realCompletSportLab]; } if (_monthModel.hasSleepData) { self.sleepCompleteLab.backgroundColor=HexRGBAlpha(0xbde4fa, 1.0); self.realCompletSleepLab.backgroundColor=HexRGBAlpha(0x5abcf2, 1.0); if (_monthModel.degreeSleep>1.0) { _monthModel.degreeSleep=1.0; } self.realCompletSleepLab.frame=CGRectMake(5, CGRectGetMaxY(self.sportCompleteLab.frame)+5,(self.contentView.frame.size.width-5*2)*monthModel.degreeSleep, 5); } }在这里碰到的问题就是:我的collectionView反复的刷新几次之后就有些条形图看不到了。如图本来这些条形图是应该有的,但是我反复的向左,向右切换(左右箭头是可以点击的)置换之后,部分条形图就不显示了。
2、2.增加了如下的代码:if (_monthModel.isFuture) { self.dayLabel.textColor=HexRGBAlpha(0xb壅酪认奉7bec7, 1.0); //将来 }else if(_monthModel.isSelectedDay){ self.contentView.backgroundColor=HexRGBAlpha(0x5bbcf4,1.0); //今天 self.dayLabel.textColor=HexRGBAlpha(0xffffff, 1.0); //ok的 self.sleepCompleteLab.hidden=YES; //今天的日期不显示运动和睡眠进度 self.sportCompleteLab.hidden=YES; self.realCompletSleepLab.hidden=YES; self.realCompletSportLab.hidden=YES;//注意这里有隐藏。 }else{ if (_monthModel.hasRedFlag) { self.redImg.image=[UIImage imageNamed:@"img_biaoqian"]; } if (_monthModel.hasData) { self.sportCompleteLab.backgroundColor=HexRGBAlpha(0xb8f3e8, 1.0); self.realCompletSportLab.backgroundColor=HexRGBAlpha(0x4fe2ca, 1.0); if (_monthModel.degree>1.0) { _monthModel.degree=1.0; } self.sportCompleteLab.hidden=NO; //增加的代码 self.realCompletSportLab.hidden=NO;//增加的代码 self.realCompletSportLab.frame=CGRectMake(5, CGRectGetMaxY(self.dayLabel.frame)+5, (self.contentView.frame.size.width-5*2)*monthModel.degree, 5); [self bringSubviewToFront:self.realCompletSportLab]; } if (_monthModel.hasSleepData) { self.sleepCompleteLab.backgroundColor=HexRGBAlpha(0xbde4fa, 1.0); self.realCompletSleepLab.backgroundColor=HexRGBAlpha(0x5abcf2, 1.0); if (_monthModel.degreeSleep>1.0) { _monthModel.degreeSleep=1.0; } self.sleepCompleteLab.hidden=NO; //增加的代码。 self.realCompletSleepLab.hidden=NO; //增加的代码 self.realCompletSleepLab.frame=CGRectMake(5, CGRectGetMaxY(self.sportCompleteLab.frame)+5,(self.contentView.frame.size.width-5*2)*monthModel.degreeSleep, 5); } }果然就ok了。不管怎么切换,状态都是正常的。很显然的就是复用的时候,连之前的状态也一起复用了。