iphone - UIView 动画在主线程上被阻止

标签 iphone ios objective-c animation uiview

我有一些嵌套的 UIView 动画,如下所示:

[UIView animateWithDuration:1.0 animations:^{
    //Animation
}completion:^(BOOL success){
    [UIView animateWithDuration:1.0 animations:^{
        //More animation
    }completion:^(BOOL success){

    }];
}];

当线程上有其他事件时,内部动画在开始之前偶尔会有延迟。

我想知道是否有办法解决这个问题,以及是否可以在此处使用 GCD 在后台线程上运行它?它是 UI 代码,所以可能不是。

最佳答案

如果答案不是太明显,解决问题的方法是:

[UIView
    animateWithDuration:1.0
    animations:^{
         //Animation
    }];
[UIView
    animateWithDuration:1.0
    delay:1.0
    options:UIViewAnimationOptionCurveEaseInOut|UIViewAnimationOptionTransitionNone
    animations:^{
        //More animation
    }
    completion:^(BOOL success) {}];

即只需在安排第一个动画的同时安排第二个动画,但告诉它在您知道第一个动画将完成之前不要开始。

一旦安排好事情,核心动画就不会被主队列事件阻止,因此您可以在一秒钟后忙碌,而第二件事仍然会在第一件事完成后立即开始。

关于iphone - UIView 动画在主线程上被阻止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18794429/

相关文章:

ios - Iphone 6 plus 模拟器工作正常,除了设备

ios - 应用程序在远程设备中不知不觉地崩溃

ios - UILocalizedIndexedCollat​​ion - MPMediaQuery

ios - 如何将带有字符串 @"XYZ"的部分设置为表格 View 中的第一部分

ios - 这种检查互联网连接的方法有什么问题?

iphone - iPhone 推送通知问题

iphone - ASIHTTPRequest 上的多个请求

ios - 为 ScrollView 设置内容偏移量

objective-c - 如何在 Swift 中从 .writetoFile 恢复 PDF

ios - 执行 block 数组的惯用方式