更改图像时清除CATiledLayers缓存

时间:2009-08-13 21:24:15

标签: iphone objective-c quartz-graphics

我有一个带有单个子视图的UIScrollView,一个由CATiledLayer支持的UIView。一切正常,只有一个例外:当我将图像从一个更改为另一个时,CATiledLayer会缓存之前的图像缩放级别。在加载更新的图像之前,滚动然后在一瞬间显示旧图像。

有没有办法彻底清除CATiledLayer的缓存,因此它不显示旧图像? CATiledLayer显然知道支持图像发生了变化,因为它要求它代表新的瓷砖...

2 个答案:

答案 0 :(得分:24)

我认为你让它变得比它需要的复杂一点。我相信你所要做的就是将你的CATiledLayer的内容设置为nil。

myCATiledlayer.contents = nil.

答案 1 :(得分:2)

-(void)invalidate
{
    CATiledLayer *tiledLayer = (CATiledLayer *)[self layer];

    tiledLayer.tileSize = CGSizeMake(93,93);//Set a different tile size
    tiledLayer.tileSize = CGSizeMake(92,92);//Restore original tile size
}

这适合我。