小编stu*_*yro的帖子

如何使用GCD进行"连续"动画?

我正在尝试UIView在远程通知到来时在屏幕上进行5秒的自定义显示.

像这样的代码:

//customView.alpha = 1.0 here
[UIView animateWithDuration:1 animations:^{
                                  customView.alpha = 0.3;
                              } 
                              completion:^(BOOL finished){
                                  // remove customView from super view.
                              }];
Run Code Online (Sandbox Code Playgroud)

问题和我需要的

但是有些情况可能会在很短的时间间隔内发出一些通知,其中有几个customView可能同时动画,而另一个可能会覆盖其他通知.

我希望这些动画一个接一个地执行,这样它们就不会发生冲突.

假设但失败了

//(dispatch_queue_t)queue was created in other parts of the code
dispatch_sync(queue, ^{
    [UIView animationWithDuration:animations:...];
});
Run Code Online (Sandbox Code Playgroud)

在GCD队列中制作动画后,我得到的结果与我使用的原始代码相同,后者没有使用GCD.动画仍然存在冲突.

顺便说一下,我听说涉及UI的动画或任务应该总是在主线程上运行,但在我的第二个代码中,动画看起来很平滑.为什么?

iphone core-animation grand-central-dispatch ios

10
推荐指数
1
解决办法
2854
查看次数

NSOperationQueue中不需要锁?

我正在阅读Apple的文档Concurrent Programming Guide,我认为OperationQueue是一系列操作.该文件说我们在大多数情况下都没有在NSOperationQueue中使用锁.

  1. 如何使用NSOperationQueue实现读写任务?

  2. 何时在NSOperationQueue中使用锁?

multithreading objective-c nsoperationqueue ios

2
推荐指数
1
解决办法
1015
查看次数