首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

重新加载和调用requestImageForAsset时UICollectionView闪烁

是由于UICollectionView的刷新机制导致的。当重新加载或调用requestImageForAsset时,UICollectionView会重新计算并重新布局其所有的cell和supplementary view,这可能会导致闪烁的现象。

为了解决这个问题,可以尝试以下几种方法:

  1. 使用UICollectionView的reloadData方法进行刷新:通过调用reloadData方法,UICollectionView会重新加载所有的数据并重新布局,这样可以避免闪烁现象。但是这种方法会导致整个UICollectionView的刷新,可能会影响性能。
  2. 使用UICollectionView的performBatchUpdates方法进行局部刷新:通过使用performBatchUpdates方法,可以实现对UICollectionView的局部刷新,只刷新需要更新的部分,避免整个UICollectionView的刷新,从而减少闪烁现象。例如,可以使用insertItems(at:)、deleteItems(at:)、reloadItems(at:)等方法来更新指定的cell。
  3. 使用UICollectionView的reloadItems(at:)方法进行单个cell的刷新:如果只有部分cell需要刷新,可以使用reloadItems(at:)方法来刷新指定的cell,避免整个UICollectionView的刷新,从而减少闪烁现象。
  4. 使用UICollectionView的UICollectionViewFlowLayout属性进行优化:可以通过设置UICollectionViewFlowLayout的estimatedItemSize属性来优化UICollectionView的布局计算,减少重新布局的次数,从而减少闪烁现象。
  5. 使用缓存机制:可以使用缓存机制来避免重复加载图片,减少重新布局的次数,从而减少闪烁现象。可以使用NSCache或SDWebImage等第三方库来实现图片的缓存。

在腾讯云的产品中,可以使用腾讯云对象存储(COS)来存储和管理图片资源,使用腾讯云云服务器(CVM)来部署和运行后端服务,使用腾讯云CDN来加速图片的加载,使用腾讯云数据库(TencentDB)来存储和管理相关数据。具体产品介绍和链接地址可以参考腾讯云官方文档。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

番外特别篇之 为什么我不建议你直接使用UIImage传值?--从一个诡异的相册九图连读崩溃bug谈起

选取,顺序有问题?我试着按照录屏中演示的顺序去选取图片,也是OK的.一股深深地无力感!竟然连复现都无法复现不了!...你可能会想,是UIImage加载的问题吧?那就研究下UIImage渲染机制吧.然后1天过去了,等你学成归来,蓦然发现 PHImageManager 是一个系统方法,它加载的图片机制,你无力干涉!...但是,这里有一个可能不是问题的问题, 这个方法调用是位于一个名为第三方库 TZImagePickerController 内,我方便直接改吗?...这么做,最好先备份或备注下. 5.使用imageWithData:兼容原来的调用 为了原来的Api接口调用兼容,用imageWithData:将NSData转换为 UIImage 传出,同时扩展方法,...此处对应的是一个本地大图预览功能,实现是在前一个页面把九张本地图的UIImage传递给轮播预览组件.此处的坑是: 把一个存放在 数组中的UIImage对象传递给 UIImageView的 image属性,当UIImageView加载到父视图

1.7K70

iOS流布局UICollectionView系列二——UICollectionView的代理方法

iOS流布局UICollectionView系列二——UICollectionView的代理方法 一、引言         在上一篇博客中,介绍了最基本的UICollectionView的使用其中我们常用的属性方法...博客地址: UICollectionView的简介简单使用:http://my.oschina.net/u/2340880/blog/522613 二、UICollectionViewDataSource...*)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath; 将要加载某个Item时调用的方法 - (void)collectionView...NSIndexPath *)indexPath NS_AVAILABLE_IOS(8_0); 将要加载头尾视图时调用的方法 - (void)collectionView:(UICollectionView...*)indexPath withSender:(id)sender{     NSLog(@"%@",NSStringFromSelector(action)); } collectionView进行重新布局时调用的方法

2K20
  • WWDC2016 Session笔记 - iOS 10 UICollectionView新特性

    而且更重要的是,在屏幕外面等待加载的cell是整整一行!这一行的cell都已经加载完数据。这是UICollectionView在用户大幅度滑动卡顿的根本原因。用专业的术语来说,掉帧。...这里还是iOS9一样的,当用户滑动UICollectionView的时候,需要一个cell,我们就从reuse队列里面拿出一个cell,并调用prepareForReuse方法。...只需要直接调用willDisplayCell就可以了。cell就又会重新出现在屏幕中。这就是iOS 10 的整个UICollectionView的生命周期。 ? ? ?...}复制代码 这里上面 UICollectionView一样,会调用TableView prefetchRowsAt indexPaths方法。...在上图中,我们可以看到,我们即使任意拖动cell,整个界面也会重新排列,并且我们改变了cell的大小,整个 UICollectionView 也会重新动态的布局。

    1.9K30

    iOS 面试策略之系统框架-UIScrollView及其子类

    用户可以删除、移动任何一行,下拉则列表中的数字重新刷新。...主要就是给 tableView 添加 refreshControl,它能够重新生成随机数并加载 tableView。...以上就是一种最简单的预加载方法。它的缺点十分明显,就是当列表很长,会出现新加载的页面还没看,应用就会发出另一次请求的情况。...举个例子,假设 Threshold 是 0.7,每个屏幕展示 10 个 cell,每次加载 10 个 cell 的数据,当浏览到第 28 个 cell ,由于会加载第 40 到第 50 个 cell...例如用惰性加载只处理用户想看到的内容,或是用 ASDK 进行智能预加载。这样可以进一步提高用户体验,并使整个滑动的性能效率最大化。 10.如何用 UICollectionView 实现瀑布流界面?

    2.6K21

    (转)iOS开发之UICollectionViewController系列(二) :详解CollectionView各种回调

    (2) 因为我们是从xib文件中加载的UICollectionReusableView,所以需要在相应的UICollectionView上进行注册。...ImageView在当前Cell高亮状态下非高亮状态下所加载的图片不同,所以可以看出Cell高亮非高亮。...NSLog(@"第%ld个Section上第%ld个Cell变为非高亮",indexPath.section ,indexPath.row); } } 4.Cell从非高亮变为高亮状态调用下面的方法...//NSLog(@"第%ld个Section上第%ld个Cell取消选中",indexPath.section ,indexPath.row); } } 9.在Cell选中和取消选中都会调用上面的方法来改变...Button的选中状态,下面是Cell在选中以及取消选中调用的方法: Objective-C /** * Cell选中调用该方法 */ - (void)collectionView

    7.7K40

    iOS开发之窥探UICollectionViewController(二) --详解CollectionView各种回调

    (2) 因为我们是从xib文件中加载的UICollectionReusableView,所以需要在相应的UICollectionView上进行注册。...ImageView在当前Cell高亮状态下非高亮状态下所加载的图片不同,所以可以看出Cell高亮非高亮。...Section上第%ld个Cell变为非高亮",indexPath.section ,indexPath.row); 18 } 19 20 21 } 4.Cell从非高亮变为高亮状态调用下面的方法...NSLog(@"第%ld个Section上第%ld个Cell取消选中",indexPath.section ,indexPath.row); 17 } 18 19 } 9.在Cell选中和取消选中都会调用上面的方法来改变...Button的选中状态,下面是Cell在选中以及取消选中调用的方法: 1 /** 2 * Cell选中调用该方法 3 */ 4 - (void)collectionView: (UICollectionView

    1.6K80

    Swift 探索 UICollectionView 之 SupplementaryView Decoration View

    来表示3.注册视图的标识符,用于 UICollectionView加载视图的时候能分辨加载的是 header 还是 footer 还是普通的 cell 第二个方法是 UICollectionViewDataSource...协议里的,返回一个 UICollectionReusableView 对象,实现它用于返回 Supplementary View 的实例,然后 UICollectionView 将其加载;它有三个参数...加载 func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind...的属性自带重新排序的效果,这里不得不提 Apple 为 UICollectionView 推出的几个重要方法: @available(iOS 9.0, *) open func beginInteractiveMovementForItem...,只有再你自己慢慢实现后,你内心才会感慨 "哦, 原来这些 API 可以这样调用,原来这个东西是这样的啊"。

    2.1K10

    iOS流布局UICollectionView系列一——初识与简单使用UICollectionView

    iOS流布局UICollectionView系列一——初识与简单使用UICollectionView 一、简介         UICollectionView是iOS6之后引入的一个新的UI控件,它...UICollectionViewScrollPosition) {     //无     UICollectionViewScrollPositionNone                 = 0,     //垂直布局使用的...//将某一item取消选中 - (void)deselectItemAtIndexPath:(NSIndexPath *)indexPath animated:(BOOL)animated; //重新加载数据...- (void)reloadData; //下面这两个方法,可以重新设置collection的布局,后面的方法多了一个布局完成后的回调,iOS7后可以用 //使用这两个方法可以产生非常炫酷的动画效果...,之后会调用上面方法的block回调 - (void)finishInteractiveTransition NS_AVAILABLE_IOS(7_0); //调用这个方法取消上面的布局动画设置,之后也会进行上面方法的

    2.9K20

    iOS开发之窥探UICollectionViewController(一) -- Ready Your CollectionViewController

    如果你的集合视图控制器与nib文件或者Storyboard进行了绑定,那么他的视图将会从nib文件或者Storybaord中进行加载。...2.当从nib文件或者Storyboard中加载集合视图,集合视图的数据源(Data source)代理对象(Delegate Object)是从nib或者Storyboard中获取的。...3.当集合视图首次出现时会重新加载上面的数据。当视图每次显示,也会清除当前的选择。不过你可以把属性clearsSelectionOnViewWillAppear设置成NO来改变这种行为。...你可以重写loadView或者其他超类中的方法,但是如果你这样做, 你必须确保在你实现的方法中使用super调用了超类中相应的方法。...3.在代码中实现相应的代理,TableView非常类似 (1) 返回Section个数的方法 - (NSInteger)numberOfSectionsInCollectionView:(UICollectionView

    1.6K60

    (转)iOS开发之UICollectionViewController系列(一) :Ready CollectionViewController

    2.当从nib文件或者Storyboard中加载集合视图,集合视图的数据源(Data source)代理对象(Delegate Object)是从nib或者Storyboard中获取的。...3.当集合视图首次出现时会重新加载上面的数据。当视图每次显示,也会清除当前的选择。不过你可以把属性clearsSelectionOnViewWillAppear设置成NO来改变这种行为。...当你初始化视图控制器,你可以使用initWithCollectionViewLayout:方法来指定集合视图想要使用的布局方式。...你可以重写loadView或者其他超类中的方法,但是如果你这样做, 你必须确保在你实现的方法中使用super调用了超类中相应的方法。...return 30; } (3) 通过Cell重用标示符来选择重用Cell Objective-C - (UICollectionViewCell *)collectionView:(UICollectionView

    5.5K40

    【IOS开发基础系列】UICollectionView专题

    再次说明,复杂的UICollectionView绝不止上面的几幅图,关于较复杂的布局相应的特性,我会在本文稍后下一篇笔记中进行一些深入。...但值得注意的,在UICollectionView中,不仅cell可以重用,Supplementary ViewDecoration View也是可以并且应当被重用的。...UICollectionViewLayout可以说是UICollectionView的大脑中枢,它负责了将各个cell、Supplementary ViewDecoration Views进行组织,...需要注意根据滚动方向不同,headerfooter的高宽中只有一个会起作用。垂直滚动section间宽度为该尺寸的高,而水平滚动为宽度起作用,如图。     ...加载过程         总的加载过程是先加载UICollectionView的委托回调配置,再初始化UICollectionViewCell。

    73230

    UICollectionView iOS 13以下删除动画crash

    通过上述信息用户行为日志,可以猜测UICollectionView是在界面跳转之后触发删除动画导致crash。...用iOS 12设备找到复现路径: 先正常触发UICollectionView的初始化cell加载 => 从UICollectionView触发界面跳转,进入下一级界面 => 触发删除Cell的业务逻辑...但是这个reloadData并不会直接触发UICollectionView马上从dataSourcedelegate去获取数据UI,而是会等到UICollectionView展示的时候再进行触发。...问题修复 区分UICollectionView删除cell场景,如果是用户手动移除则会进行动画;如果是非手动触发删除则直接调用reloadData,不调用deleteItemsAtIndexPaths。...UICollectionView内部有一个关于item数量的缓存,在首次调用numberOfItemsInSection:之后会缓存这个结果值,后续继续调用numberOfItemsInSection:

    1.8K30

    iOS小经验:UITableView&UICollectionView设置单元格的默认选中状态

    场景需求 一个表格视图(或者宫格视图)中,当一个单元格被选中设置彩色样式,选中其它单元格设置灰色样式。 2. 一个思路 通过实现选中和非选择的代理,以在适当的时机进行UI更新操作。 3....tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath; 3.2 代码设置默认选中状态 (要等数据加载完成之后再调用...UICollectionView 4.1 通过屏幕点击改变的选中状态回调给代理 //选中 - (void)collectionView:(UICollectionView *)collectionView...collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath; 4.2 代码设置默认选中状态 (要等数据加载完成之后再调用) 执行方法的主体...手动执行代理 上述两张方案的区别在于,设置选中状态完后,屏幕点击其它cell,一个执行原cell的didDeselect方法,一个不执行。

    3.6K50

    (转)iOS开发之UICollectionViewController系列(三) :UICollectionView自定义瀑布流

    1.布局预加载函数 当布局首次被加载时会调用prepareLayout函数,见名知意,就是预先加载布局,在该方法中可以去初始化布局相关的数据。...1.重写prepareLayout方法去初始化一些数据,该方法在CollectionView重新加载只会调用一次,所以把一些参数的配置,计算每个Cell的宽度,每个Cell的高度等代码放在预处理函数中...在该函数中具体调用的函数如下所示: Objective-C #pragma mark -- 虚基类中重写的方法 /** * 该方法是预加载layout, 只会被执行一次 */...在此函数中会调用求CellY数组中的最大值。...Cell的高度,把每个Cell的高度记录在数组中,便于Cell加载使用。

    6K40

    iOS开发之窥探UICollectionViewController(五) --一款炫酷的图片浏览组件

    这些代理方法提供了Cell的大小边距。该文件的接口中定义了一个代理对象,当然为了强引用循环,该代理对象是weak类型的。...预加载布局方法, 该方法会在UICollectionView加载数据执行一次,在该方法中负责调用一些初始化函数。具体如下所示。...该方法返回YES意味着当滚动,会再次执行上面(4)的方法,重新为每个Cell的属性赋值。所以重写下面的方法,并返回YES(下面的表达式也是一样的)才可以运动起来呢。...1 //当边界发生改变,是否应该刷新布局。如果YES则在边界变化(一般是scroll到其他地方),将重新计算需要的布局信息。...SCREEN_WIDTH/2; 11 12 return proposedContentOffset; 13 } View Code 4.下方就是我自己实现的方法了,也就在重写的方法中调用的函数

    1.5K80

    iOS开发之窥探UICollectionViewController(三) --使用UICollectionView自定义瀑布流

    1.布局预加载函数 当布局首次被加载时会调用prepareLayout函数,见名知意,就是预先加载布局,在该方法中可以去初始化布局相关的数据。...1.重写prepareLayout方法去初始化一些数据,该方法在CollectionView重新加载只会调用一次,所以把一些参数的配置,计算每个Cell的宽度,每个Cell的高度等代码放在预处理函数中...在该函数中具体调用的函数如下所示: 1 #pragma mark -- 虚基类中重写的方法 2 3 /** 4 * 该方法是预加载layout...在此函数中会调用求CellY数组中的最大值。...根据Cell的最小高度最大高度来利用随机数计算每个Cell的高度,把每个Cell的高度记录在数组中,便于Cell加载使用。

    1.3K100

    iOS开发 MVVM+RAC 的使用Demo效果ReactiveCocoa简介Demo分析代码Demo地址

    基础的话我还是推荐这篇博文 讲的都挺细的 当然不爽的话可以试试这个视频版的,也是某培训机构流出的 Demo分析 本文使用的是豆瓣API(非官方) Demo所要做的功能很简单: 从网络中请求数据,并加载到...MVVM中最重要也就是这个VM了,VM通常与RAC紧密结合在一起,主要用于事务数据的处理信号间的传递。...Block比传统回调函数有2点优势: 允许在调用点上下文书写执行逻辑,不用分离函数 Block可以使用local variables....代码 由于BlocksKit的使用,当我们写DelegateDatasource 就不用分离函数,整个逻辑都能凑在一起,比如这样定义一个collectionView: - (void)initStyle...{ UICollectionView *collectionView = [[UICollectionView alloc] initWithFrame:self.view.frame collectionViewLayout

    1.7K40
    领券