UIScrollView 滚动时暂停任何操作
Posted
技术标签:
【中文标题】UIScrollView 滚动时暂停任何操作【英文标题】:Pause any operations while UIScrollView is scrolling 【发布时间】:2014-03-07 09:39:38 【问题描述】:我有一个大的分页 UIScrollView,里面有几个图像和视图。我想要实现的目标是在用户浏览页面时暂停任何后台操作。我需要这个,因为该应用正在下载和计算内容,并且滑动动画不流畅。
有什么想法吗?
谢谢
【问题讨论】:
你是否在uiscrollview图像中实现了延迟加载..?根据您的问题,我猜您需要延迟加载图像,这会使您的滚动视图在滚动时受到影响.. 【参考方案1】:你应该以相反的方式思考。
在后台下载图像后,使用主线程在 UI 中更新它。
主线程正在处理 UI 更新。
根据您的描述,
“滑动动画不流畅”
您正在主线程上下载图像。
【讨论】:
我已经在使用队列下载和绘制图像了。事实是我在后台做了很多(真的很多)事情。我想暂停所有这些,因为我无法控制所有内容,也不是所有内容都在众所周知的队列中。 你到目前为止所尝试的。在后台下载显示一些代码【参考方案2】:您可以使用 NSOperationQueue 并在 UIScrollView 的委托中捕获滚动事件以暂停/继续操作。
- (void)viewDidLoad
[super viewDidLoad];
queue=[[NSOperationQueue alloc]init];
NSBlockOperation *intenseOperation=[NSBlockOperation blockOperationWithBlock:^
//do intense stuff
];
[queue addOperation:intenseOperation];
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
[queue setSuspended:NO];
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
[queue setSuspended:YES];
【讨论】:
以上是关于UIScrollView 滚动时暂停任何操作的主要内容,如果未能解决你的问题,请参考以下文章