Ios 如何使过渡动画在其他线程而不是主线程上运行
我试图做一个从UIImage背景色到从服务器加载的实际图像的过渡动画。我发现转换会使UITableView在动画发生时结巴。有没有一种方法可以使过渡平稳而不引起口吃Ios 如何使过渡动画在其他线程而不是主线程上运行,ios,Ios,我试图做一个从UIImage背景色到从服务器加载的实际图像的过渡动画。我发现转换会使UITableView在动画发生时结巴。有没有一种方法可以使过渡平稳而不引起口吃 float fadeDuration = 1.0f; imageView.backgroundColor = [UIColor averageColor]; UIImage * toImage = [UIImage imageWithData:data]; [UIView transitionWith
float fadeDuration = 1.0f;
imageView.backgroundColor = [UIColor averageColor];
UIImage * toImage = [UIImage imageWithData:data];
[UIView transitionWithView:imageView
duration:fadeDuration
options:UIViewAnimationOptionTransitionCrossDissolve
animations:^{
imageView.image = toImage;
} completion:nil];
自从您第一次调用
getDataInBackgroundithBlock
以来,您在该块中编写的代码不会在主线程上执行,而是在另一个线程上执行。但是UI更改必须在UI/主线程上执行
要在主线程上执行代码,必须将UIView transitionWithView
调用包装到dispatch\u asnyc
:
// ... some non-UI code
UIImage * toImage = [UIImage imageWithData:data];
dispatch_async(dispatch_get_main_queue(), ^{
[UIView transitionWithView:imageView
duration:fadeDuration
options:UIViewAnimationOptionTransitionCrossDissolve
animations:^{
imageView.image = toImage;
} completion:nil
];
// ... more UI code
});
// ... more non-UI code
如果这对您有效,请尝试回答。您是在某种回调或异步线程中执行上述代码吗?@luk2302我实际上是从[imageFile GetDataInBackgroundithBlock:^(NSData*data,NSError*error)调用它的。我在这里使用Parse。@Geeroz我在回答中为您发布了一个修复程序。我会尝试一下。谢谢@luk2302