刘浩的技术博客

就当是做个笔记,顺便分享一些知识,更希望业界的交流

UIView动画块占用主线程不

UIView动画块占用主线程吗

一般人都会有一个这样的疑问,我动画UIView的属性的时候需要重启线程以便不占用主线程吗,比如我封装一个进度条的动画,是不是要考虑下主线程。那么UIView运行动画block时实际的运行状况是怎么样的,以下我来讲讲。

对于block

比如以下代码:

1
2
[UIView animateWithDuration: some duration
                     animations:^{ some animation }];

实际上以上代码中block是在主线程(main thread)执行的,这一部分是会阻塞主线程的。

对于block中属性的动画

对于动画部分,系统是会启动一个动画线程,这个线程不阻塞你的主线程。系统使用动画线程作为一个帧定时器,每到一个触发时间这个线程发送一个更新到你的主线程其中携带了你的可动画属性的进度值,你可以在你的表示层检查这些值得当前状态。