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

2025-11-05 13:43:08

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

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢