iOS中collectionview的cell的复用--特殊情况

 时间:2026-02-18 12:11:43

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反复的刷新几次之后就有些条形图看不到了。如图本来这些条形图是应该有的,但是我反复的向左,向右切换(左右箭头是可以点击的)置换之后,部分条形图就不显示了。

iOS中collectionview的cell的复用--特殊情况

2、2.增加了如下的代码:

  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.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了。不管怎么切换,状态都是正常的。很显然的就是复用的时候,连之前的状态也一起复用了。

  • 闪之轨迹2 无剧透攻略
  • 到香港一定要吃的10大美食
  • 刀剑神域手游礼包码如何领取?
  • 蔓性风铃花不开花怎么办?
  • 宝宝黄疸一般出生多久会退掉
  • 热门搜索
    春秋旅游社 昌平旅游 盘山旅游攻略 阳春旅游 国外旅游景点排名 海南国际旅游岛先行试验区 黄山旅游线路 北京旅游股票 去厦门旅游攻略 黄河旅游