0

目前我有一个 CATransistion 应该用新的替换 _backgroundImageView.image 。它工作得很好......而且工作得很快,但是之前的图像会在这个过渡期间随机出现故障......也就是在过渡期间的某处闪烁一帧的完整图像,然后完成过渡。

这是代码:

[CATransaction begin];

CATransition *transition = [CATransition animation];
transition.type = kCATransitionFade;
transition.duration = 0.3;
transition.delegate = self;
[transition setValue:@"swipe" forKey:@"tag"];
[_backgroundImageView.layer addAnimation:transition forKey:nil];

 _backgroundImageView.image = [_backgroundImages objectAtIndex:pageControl.currentPage];
[CATransaction commit];

如果我在代码之前添加此代码,则不会发生故障,但其他 UI 内容会变得不稳定,因为图像比较似乎阻塞了主线程(它必须这样做,因为动画也是主线程的事情)

if ([UIImagePNGRepresentation(_backgroundImageView.image) isEqualToData:UIImagePNGRepresentation([_backgroundImages objectAtIndex:pageControl.currentPage])]) {
    return;
}

顺便说一句,设备上不会发生闪烁......至少到目前为止我可以看到......所以也许这个问题没有实际意义......我在转换期间看到了崩溃......但这可能是另一个问题。

4

0 回答 0