我正在开发一个在iPhone上显示平铺地图的应用程序。目前我在UIScrollView中使用CATiledLayer:
MyTiledDelegate *delegate=[[MyTiledDelegate alloc] initWithMapLayer:map];
tileLayer = [CATiledLayer layer];
tileLayer.delegate = delegate;
[scrollView.layer addSublayer:tileLayer];
[tileLayer setNeedsDisplay];
我编写并设置了自己的委托,该委托实现了绘制图层方法,代码如下:
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx{
CGRect rect =CGContextGetClipBoundingBox(ctx);
CGFloat x = fabs(round(rect.origin.x/tileSize));
CGFloat y = fabs(round(rect.origin.y/tileSize));
Tile *tile = [map getTileForMapZoom:z x:x y:y];
CGImageRef img=[tile getRealImage];
CGContextDrawImage(
ctx,
CGRectMake(tile.x*tileSize,tile.y*tileSize, tileSize,tileSize) ,
img);
}//edited for brevity
我对CATiledLayer的默认行为感到烦恼,它在拼贴瓦片后会淡入。而且,有时淡入效果不完整(透明度只到90或95%)。如何更改或(最好是)删除淡入动画?
我尝试过为我的CATiledLayer实例设置
speed
和duration
属性,但都没有用。我没有对拼贴图层设置任何动画,[tiledLayer removeAllAnimation]
也没有起作用。谢谢任何帮助。