0

我在 tableview 上使用自定义单元格,并且我有一个 PFImageView 背景图像出口(来自 Interface Builder)。

当我滚动表格并且即将出现的单元格背景图像是第一次加载时(不涉及缓存),它会产生令人讨厌的跳跃视觉效果。

当图像已经缓存时,不会产生这种奇怪的效果。我使用此代码片段来异步加载图像:

_ivBackground.image = nil;
_ivBackground.file = recipe.photo;
[_ivBackground loadInBackground:^(UIImage *image, NSError *error) {
    if (!error) {
        [UIView transitionWithView:_ivBackground
                          duration:0.2f
                           options:UIViewAnimationOptionTransitionCrossDissolve
                        animations:^{
                            _ivBackground.image = image;
                        } completion:NULL];
    }
}];

我注意到加载大于 200kb 的图像时会出现这种效果。

有没有其他解决方案可以避免这种奇怪的行为?

谢谢你。

4

1 回答 1

0

那是因为 PFImageView 已经设置了图像(没有动画)。如果你想要一个自定义动画,也许你应该实现你自己的 UIImageView 子类。

或者,您可以尝试_ivBackground.image = nil;在动画调用之前调用(我没有尝试过)。

[_ivBackground loadInBackground:^(UIImage *image, NSError *error) {
    _ivBackground.image = nil;
    if (!error) {
        [UIView transitionWithView:_ivBackground
                          duration:0.2f
                           options:UIViewAnimationOptionTransitionCrossDissolve
                        animations:^{
                            _ivBackground.image = image;
                        } completion:NULL];
    }

}];
于 2015-08-20T10:46:36.820 回答