繁体   English   中英

了解ios UIView动画块和dispatch_async(dispatch_get_main_queue)块

[英]Understanding ios UIView animation block and dispatch_async(dispatch_get_main_queue) block

我想要更好地理解这个话题。 让我们说我想做一些非常酷的动画,如下所示

- (void)coolAnimation 
{
    [UIView animateWithDuration: some duration
                     animations:^{ some animation }];
}

由于它是一个动画块,它会自动添加到main_queue吗? 或者为了最佳实践,我应该始终将UI更新添加到main_queue中,如下所示。

dispatch_async(dispatch_get_main_queue(), ^{
    [self coolAnimation];
});

无论您在何处调用[UIView animateWithDuration:animations:]都会在主线程上执行块的内容。 最好让操作系统运行你的动画; 动画线程不会阻塞主线程 - 只有动画块本身。

在一个非常高级的手工波形视图中, [UIView animateWithDuration:animations:]评估您的块并确定其中每个可动画值的函数。 操作系统有一个动画线程,它用作帧计时器,然后在每个刻度线上,它将主线程上的更新发送到您的可动画属性及其进度值。 (您可以在presentationLayer上查看这些值的当前状态。)

您传递的动画块立即被调用。 无需使用任何队列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM