Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 阳离子层;高分辨率位图缩放_Ios_Ipad_Uiimage_Core Graphics_Catiledlayer - Fatal编程技术网

Ios 阳离子层;高分辨率位图缩放

Ios 阳离子层;高分辨率位图缩放,ios,ipad,uiimage,core-graphics,catiledlayer,Ios,Ipad,Uiimage,Core Graphics,Catiledlayer,我正在尝试用不同的帧将波形(高分辨率位图)渲染到UIView中。我想扩展它,并决定使用CATiledLayer以获得更好的性能。但结果我得到了我意想不到的结果 源位图(5000 x 80像素): 结果(?x 80像素): 轨道不一样;当我继续缩放/滚动时,它们是不同的 代码本身: + (Class)layerClass { return [CATiledLayer class]; } - (id)initWithFrame:(CGRect)frame{ self = [supe

我正在尝试用不同的帧将波形(高分辨率位图)渲染到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轴进行缩放吗?


提前谢谢

CATiledLayer应该像在谷歌地图中一样用于显示分幅。你只需要适当的水平缩放。所以使用你们需要的画框的CALayer。当我缩放分辨率超过2000像素的图像时,设备每次都会以更好的方式重新绘制,只是性能不好。我需要一些聪明的方法来重画,因为我的图像帧的宽度可能超过5000像素。我在屏幕右侧有一个大的滚动视图,它有很多UITableViewCells,我可以滚动和缩放。每次我为track添加剪辑-新视图都会添加到tableviewcell。谢谢回复,伙计。好的。问:你们有矢量数据代替图像吗?谢谢你们的建议。成功了。我只是停留在那个波形上。和往常一样,这个决定非常简单。再次感谢你,伙计!!否。我正在打开文件,将样本读入数据结构,然后将其绘制为位图表示。这就是全部。你认为有什么更有效的解决办法?