如何更改iphone CATiledLayer fadeDuration?(How to chang

2019-06-24 18:22发布

我的工作是平铺显示地图的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%的不透明度)。

如何更改或(优选地)除去淡入动画?

我打的speedduration我CATiledLayer实例的属性,都无济于事。 我不设置上的TiledLayer任何动画。 在[tiledLayer removeAllAnimation]也不改变任何东西。

感谢您的任何指针。

Answer 1:

你应该继承的CATiledLayer,并返回0 fadeDuration以禁用淡入:

@interface FastCATiledLayer : CATiledLayer
@end

@implementation FastCATiledLayer
+(CFTimeInterval)fadeDuration {
  return 0.0;
}
@end

我也有问题,淡入动画没有完成,是什么帮助是对视图的背景颜色设置为[UIColor clearColor]



Answer 2:

尝试继承和重写+fadeDuration层上存取。



Answer 3:

或在斯威夫特4:

class CAFastTiledLayer: CATiledLayer {
    class func fadeDuration() -> CFTimeInterval {
        return 0.0 
    }
}


文章来源: How to change iphone CATiledLayer fadeDuration?