タイルマップを表示するiphoneアプリケーションで作業しています。私は現在、UIScrollViewの中CATiledLayerを使用しています:iphone CATiledLayer fadeDurationを変更するには?
MyTiledDelegate *delegate=[[MyTiledDelegate alloc] initWithMapLayer:map];
tileLayer = [CATiledLayer layer];
tileLayer.delegate = delegate;
[scrollView.layer addSublayer:tileLayer];
[tileLayer setNeedsDisplay];
私が書いたので、などの描画層のメソッドを実装し、私自身のデリゲートを設定:私はCAtiledLayerのデフォルトの動作に悩まさ午前
- (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
をタイルを描いた後にフェードインする。また、フェーディンが完全でない場合もあります(90%または95%の不透明度で停止します)。
どのように変更できますか(できれば)フェードインアニメーションを削除できますか?
私はCATiledLayerインスタンスのspeed
とduration
のプロパティを使用していましたが、役に立たないです。私はtiledLayerにアニメーションを設定しません。 [tiledLayer removeAllAnimation]
は何も変更されません。
ありがとうございます。
持続時間が設定されていないか、または負の数に設定されている場合、フェード持続時間のデフォルトは0.25になります。とにかく私が見つけることができないように思われない*フェードしない*。 – catsby
皆さん。あなたの答えをありがとう。彼らは問題を解決します。私はサブクラスでオーバーライドしましたが、まだ別のクラスを作成することを伴わないよりエレガントな方法があることを望みました。私はCATiledLayerデリゲートをCATiledLAyerのサブクラスにすると思います。再度、感謝します。 –
こんにちはnico_h あなたの問題をどのように修正したか教えてください。私も同じ問題に直面しています。あなたはサブクラスを使わずにこれをどのように達成しましたか? – CKT