我正在开发一个显示平铺地图的iphone应用程序。我当前正在uiscrollview中使用catiledlayer:
MyTiledDelegate *delegate=[[MyTiledDelegate alloc] initWithMapLayer:map];
tileLayer = [CATiledLayer layer];
tileLayer.delegate = delegate;
[scrollView.layer addSublayer:tileLayer];
[tileLayer setNeedsDisplay];
我编写并设置了自己的委托,该委托实现了draw layer方法,如下所示:
- (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默认的fadein行为让我很恼火。此外,有时FADEIN不完全(它停止在90或95%不透明度)。
如何更改或(最好)删除fadein动画?
我使用了catiledlayer实例的
speed
和duration
属性,但没有效果。我没有在平铺层上设置任何动画。[tiledLayer removeAllAnimation]
也不会改变任何东西。谢谢你的指点。
最佳答案
您应该子类化catiledlayer并返回fadeduration 0以禁用淡入:
@interface FastCATiledLayer : CATiledLayer
@end
@implementation FastCATiledLayer
+(CFTimeInterval)fadeDuration {
return 0.0;
}
@end
我还有一个问题是动画中的淡入度没有完成,帮助的是将视图的背景色设置为
[UIColor clearColor]
关于iphone - 如何更改iPhone的CATiledLayer fadeDuration?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1073727/