Я работаю над приложением iphone, которое отображает плиточные карты. Я в настоящее время использую CATiledLayer в UIScrollView:Как изменить iphone CATiledLayer fadeDuration?
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%).
Как я могу изменить или (желательно) удалить анимацию fadein?
Я играл с объектами моего экземпляра CATiledLayer speed
и duration
, но безрезультатно. Я не устанавливаю анимацию на tiledLayer. [tiledLayer removeAllAnimation]
ничего не меняет.
Спасибо за любые указатели.
Продолжительность затухания по умолчанию равна 0,25, если продолжительность не установлена или установлена на отрицательное число. похоже, я все равно не могу найти, чтобы не исчезать. – catsby
Приветствую вас. Спасибо за ответ. Они исправляют проблему. Я имел хотя бы переопределение в подклассе, но надеялся, что был более элегантный способ, который не предполагал создание еще одного класса. Думаю, я сделаю CATiledLayer делегированием подкласса CATiledLAyer. Еще раз спасибо. –
hi nico_h Можете ли вы, plesae сказать мне, как вы исправили свою проблему. Я также сталкиваюсь с той же проблемой. как вы достигли этого без использования подкласса? – CKT