Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在UIScrollView滚动时暂停任何操作_Ios_Objective C_Uiscrollview - Fatal编程技术网

Ios 在UIScrollView滚动时暂停任何操作

Ios 在UIScrollView滚动时暂停任何操作,ios,objective-c,uiscrollview,Ios,Objective C,Uiscrollview,我有一个大的分页UIScrollView,里面有几个图像和视图。我试图实现的是在用户浏览页面时暂停任何后台操作。我需要这个,因为该应用程序正在下载和计算的东西和滑动动画是不顺利的 有什么想法吗 谢谢您可以使用NSOperationQueue并捕获UIScrollView委托中的滚动事件来暂停/继续操作 - (void)viewDidLoad{ [super viewDidLoad]; queue=[[NSOperationQueue alloc]init]; NS

我有一个大的分页UIScrollView,里面有几个图像和视图。我试图实现的是在用户浏览页面时暂停任何后台操作。我需要这个,因为该应用程序正在下载和计算的东西和滑动动画是不顺利的

有什么想法吗


谢谢

您可以使用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];
}

你应该以相反的方式思考

一旦图像在后台下载,然后使用主线程在UI中更新它

主线程正在处理UI更新

根据你的描述

“滑动动画不平滑”


您正在主线程上下载图像。

是否在uiscrollview图像中实现了延迟加载?从你的问题来看,我想你需要延迟加载图像,这会让你的滚动视图在滚动时被击中。我已经在下载和使用队列绘制图像了。事实上,我在后台做了很多事情。我想暂停所有的发言,因为我无法控制一切,也不是所有的发言都在一个众所周知的队列中。在后台下载中显示一些代码