我正在尝试从UIImage背景颜色到从服务器加载的实际图像进行过渡动画。我发现转换会在动画发生时使UITableView卡顿。有没有办法使过渡平稳而不会造成口吃。
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];
答案 0 :(得分:0)
由于您第一次调用getDataInBackgroundWithBlock
,您在该块中编写的代码不会在主线程上执行,而是在其他线程上执行。但是必须在UI /主线程上执行 UI更改。
要获取要在主线程上执行的代码,您必须将UIView transitionWithView
调用包装到dispatch_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