Я пытаюсь визуализировать форму волны (растровое изображение высокого разрешения) в UIView с разными кадрами.Я хочу масштабировать его и решил использовать CATiledLayer для лучшей производительности.Но в результате я получил то, чего не ожидал.
исходное растровое изображение (5000 x 80 пикселей): результат (? X 80 пикселей): Дорожки не совпадают;и когда я продолжаю масштабирование / прокрутку - они отличаются.
Сам код:
+ (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?
Заранее спасибо!