我正在一个以 pdf 格式显示地图的应用程序中工作。因为我有基本地图 pdf (pdf1),我需要在其上显示另一个具有城市名称的pdf (pdf2)图层。
我可以通过在视图上添加另一个 CATiledLayer 对象来做到这一点,如下所示:
NSString *filePath = [[NSBundle mainBundle] pathForResource:fileName ofType:@"pdf"];
NSURL *pdfURL = [NSURL fileURLWithPath:filePath];
CGPDFDocumentRef myDocumentRef = CGPDFDocumentCreateWithURL((CFURLRef) pdfURL);
_PDFPageRef = CGPDFDocumentGetPage(myDocumentRef, 1);
CATiledLayer *tiledLayer = [CATiledLayer layer];
tiledLayer.delegate = self;
tiledLayer.levelsOfDetail = 3; // Zoom levels
tiledLayer.levelsOfDetailBias = 3; // Bias
tiledLayer.backgroundColor = [UIColor clearColor].CGColor;
UIScreen *mainScreen = [UIScreen mainScreen]; // Main screen
CGFloat screenScale = [mainScreen scale]; // Main screen scale
CGRect screenBounds = [mainScreen bounds]; // Main screen bounds
CGFloat w_pixels = (screenBounds.size.width * screenScale);
CGFloat h_pixels = (screenBounds.size.height * screenScale);
CGFloat max = ((w_pixels < h_pixels) ? h_pixels : w_pixels);
CGFloat sizeOfTiles = ((max < 512.0f) ? 512.0f : 1024.0f);
tiledLayer.tileSize = CGSizeMake(sizeOfTiles, sizeOfTiles);
tiledLayer.frame = CGRectIntegral(CGPDFPageGetBoxRect(_PDFPageRef, kCGPDFCropBox));
[[self layer] addSublayer:tiledLayer];
[self setNeedsDisplay];
但我在这里面临两个问题:
如果 pdf1 未完全加载并且我在其上添加另一个 pdf2 则 pdf1 将永远不会完全加载。它会变得模糊。
如果 pdf1 已完全加载,则在添加 pdf2 并在缩放 3.4 倍后缩放时,pdf1 变得模糊。
请帮忙!!