我正在开发一个显示平铺地图的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实例的speedduration属性,但没有效果。我没有在平铺层上设置任何动画。[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/

10-10 20:33