【问题标题】:Pause any operations while UIScrollView is scrollingUIScrollView 滚动时暂停任何操作
【发布时间】:2014-03-07 09:39:38
【问题描述】:

我有一个大的分页 UIScrollView,里面有几个图像和视图。我想要实现的目标是在用户浏览页面时暂停任何后台操作。我需要这个,因为该应用正在下载和计算内容,并且滑动动画不流畅。

有什么想法吗?

谢谢

【问题讨论】:

  • 你是否在uiscrollview图像中实现了延迟加载..?根据您的问题,我猜您需要延迟加载图像,这会使您的滚动视图在滚动时受到影响..

标签: ios objective-c 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];
}

【讨论】:

    猜你喜欢
    • 2011-10-26
    • 1970-01-01
    • 2010-10-10
    • 2019-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多