我有一个带有单个子视图的 UIScrollView,一个由 CATiledLayer 支持的 UIView。除了一个例外,一切都运行良好:当我将图像从一个更改为另一个时,CATiledLayer 会缓存以前的图像缩放级别。滚动然后在更新的图像加载之前显示旧图像一瞬间。
有没有办法完全清除 CATiledLayer 的缓存,使其不显示旧图像?CATiledLayer 显然知道背景图像发生了变化,因为它要求它的代表提供新的瓷砖......
我有一个带有单个子视图的 UIScrollView,一个由 CATiledLayer 支持的 UIView。除了一个例外,一切都运行良好:当我将图像从一个更改为另一个时,CATiledLayer 会缓存以前的图像缩放级别。滚动然后在更新的图像加载之前显示旧图像一瞬间。
有没有办法完全清除 CATiledLayer 的缓存,使其不显示旧图像?CATiledLayer 显然知道背景图像发生了变化,因为它要求它的代表提供新的瓷砖......
我认为你让这比它需要的复杂一点。我相信您所要做的就是将 CATiledLayer 的内容设置为 nil。
myCATiledlayer.contents = nil.
-(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
}
这对我有用。