CATiledLayer;растровое масштабирование высокого разрешения - PullRequest
0 голосов
/ 27 марта 2012

Я пытаюсь визуализировать форму волны (растровое изображение высокого разрешения) в UIView с разными кадрами.Я хочу масштабировать его и решил использовать CATiledLayer для лучшей производительности.Но в результате я получил то, чего не ожидал.

исходное растровое изображение (5000 x 80 пикселей): source bitmap: результат (? X 80 пикселей): source bitmap: Дорожки не совпадают;и когда я продолжаю масштабирование / прокрутку - они отличаются.

Сам код:

+ (Class)layerClass {
    return [CATiledLayer class];
}

- (id)initWithFrame:(CGRect)frame{
    self = [super initWithFrame:frame];
    if (self) {

        self.loading = YES;
        self.recording = NO;

        CATiledLayer *tiledLayer = (CATiledLayer *)[self layer];
        tiledLayer.levelsOfDetail = 7;
    tiledLayer.levelsOfDetailBias = 3;
    tiledLayer.tileSize = CGSizeMake(128.0, 128.0); 

        [self addSubview:activityView];+ (Class)layerClass {
    return [CATiledLayer class];
}

-(void)drawRect:(CGRect)rect {
        UIImage* image = [UIImage imageWithContentsOfFile:self.imagePath];

        CGFloat scale = parent.frame.size.width/image.size.width;

        CGContextRef context = UIGraphicsGetCurrentContext();
        CGContextClearRect(context, rect);
        CGContextSaveGState(context);

        CGContextScaleCTM(context, scale, 1.0); 
        CGContextDrawImage(context, CGRectMake(0, 0, image.size.width, image.size.height), image.CGImage);
        CGContextRestoreGState(context);
}

-Что я здесь не так делаю?-Можно ли масштабировать CATiledLayer только по оси X?

Заранее спасибо!

...