大佬教程收集整理的这篇文章主要介绍了ios – 集合查看Cell Circle Loader影响多个单元格和闪烁,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在下图中,我正在下载日语,但是装载程序暂时在阿尔巴尼亚语,亚美尼亚语,Cebuano以及此屏幕截图时未捕获的其他几本书中闪烁.因为日本装载机也在闪烁,我拍摄截图的那一刻根本没有显示日本装载机.
经过一些调试后,我发现这很有可能发生,因为每次重新加载视图时,单元格都会被重用,并且由于某种原因,单元格的顺序会被循环.我已经尝试覆盖自定义单元格上的prepareForReuse并将设置重新设置为隐藏,但是我仍然会在一瞬间获得进度幽灵,导致闪烁.
我执行进度指示器的代码非常基本.下面是我的设置功能,它在单元初始化时创建进度条
func setupProgressCircle(){ progressCircle = CAShapeLayer(); let centerPoint = CGPoint (x: bookView.bounds.width / 2,y: bookView.bounds.height / 2); let circleRadius : CGFloat = bookView.bounds.width / 2 * 0.5; var circlePath = UIBezierPath(arcCenter: centerPoint,radius: circleRadius,startAngle: CGFloat(-0.5 * M_PI),endAngle: CGFloat(1.5 * M_PI),clockwise: true ); progressCircle = CAShapeLayer (); progressCircle!.path = circlePath.CGPath; progressCircle!.strokeColor = UIColor.whiteColor().CGColor; progressCircle!.fillColor = UIColor.clearColor().CGColor; progressCircle!.lineWidth = 5; progressCircle!.strokeStart = 0; progressCircle!.strokeEnd = 0 overlayView.layer.addSublayer(progressCirclE); }
随着下载进展以增加进度,我从cellForRowATindexPath调用以下函数.
func setProgress(progress: CGFloat){ progressCircle?.strokeEnd = progress }
我已经添加了以下函数,以便当单元格被重用或重新排序时,进度将默认为无效且无指示.
override func prepareForReuse() { if progressCircle != nil{ progressCircle?.hidden = true progressCircle!.strokeEnd = 0 } }
不幸的是,我所尝试的任何事情都没有解决这个问题.目前,每当我获得一本书的进度更新时,我都会调用collectionView.reloadData(),我想知道这是否可能是一个问题.
我愿意重构,我不是专家,很可能会把问题接近错误.我愿意接受建议,并可根据需要进行详细说明.谢谢!
根据要求,这是我的cellForRowATindexPath的精简版本
func collectionView(collectionView: UICollectionView,cellForItemATindexPath indexPath: NSIndexPath) -> UICollectionViewCell { let cell = collectionView.dequeueReusableCellWithReusEIDentifier("CollectionCell",forIndexPath: indexPath) as! LanguageBookCell var book = controller.objectATindexPath(indexPath) as! BookData ...Cell Text/Image/Config... if(book.active == falsE){ cell.overlayView!.alpha = 0.7 cell.dlLabel.hidden = false cell.dlLabel.text = "Tap to Download" cell.progressCircle.hidden = true }else if(book.status == "Loading"){ cell.progressCircle.hidden = false cell.setProgress(percentLoaded) } ... Other Cell Configs... return cell }
以上是大佬教程为你收集整理的ios – 集合查看Cell Circle Loader影响多个单元格和闪烁全部内容,希望文章能够帮你解决ios – 集合查看Cell Circle Loader影响多个单元格和闪烁所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。