Iphone 使用CATiledLayer渲染PDF时,如何在缩放时保持文本清晰
我已经在我的应用程序中实现了PDF查看器。这是一个滚动视图,使用Iphone 使用CATiledLayer渲染PDF时,如何在缩放时保持文本清晰,iphone,ios,ipad,quartz-graphics,Iphone,Ios,Ipad,Quartz Graphics,我已经在我的应用程序中实现了PDF查看器。这是一个滚动视图,使用CATiledLayer进行缩放 一种更简单的方法是使用qlviewcontroller,它支持通过页面控制和缩放查看PDF,但我需要对PDF页面进行精细控制 我有观众的工作,但希望重画踢在更快。目前,当我放大到两倍大小(200%)时,它只会重新绘制文本。因此,在放大足够远之前,文本会显得模糊 我已经尝试了levelOfDetail和levelOfDetailBias的各种组合,试图更快地重新绘制,但没有效果 以下是创建CATile
CATiledLayer
进行缩放
一种更简单的方法是使用qlviewcontroller
,它支持通过页面控制和缩放查看PDF,但我需要对PDF页面进行精细控制
我有观众的工作,但希望重画踢在更快。目前,当我放大到两倍大小(200%)时,它只会重新绘制文本。因此,在放大足够远之前,文本会显得模糊
我已经尝试了levelOfDetail
和levelOfDetailBias
的各种组合,试图更快地重新绘制,但没有效果
以下是创建CATiledLayers
的代码:
//get the pdf crop box rectangle
CGPDFPageRef pageRef=[self.pdf getPdfPage:self.myPageNo];
CGRect cropBox = CGRectIntegral(CGPDFPageGetBoxRect(pageRef, kCGPDFCropBox));
//scale to size of the screen
CGRect targetRect = self.view.bounds;
CGFloat xScale = targetRect.size.width / cropBox.size.width;
CGFloat yScale = targetRect.size.height / cropBox.size.height;
self.scale = xScale < yScale ? xScale : yScale;
//alway fill height of screen
self.scale = yScale;
//used to center the pdf horizontally
self.xOffSet = (targetRect.size.width - cropBox.size.width*self.scale)/2;
[self renderPDFPageToImage];
CGRect boundsRect = self.view.bounds;
//use a tiled layer for better performance
CATiledLayer *tiledLayer = [CATiledLayer layer];
tiledLayer.delegate = self;
tiledLayer.tileSize = CGSizeMake(1024.0, 1024.0);
tiledLayer.levelsOfDetail = 4;
tiledLayer.levelsOfDetailBias = 4;
tiledLayer.frame = boundsRect;
self.myContentView = [[[UIView alloc] initWithFrame:boundsRect] autorelease];
[self.myContentView.layer addSublayer:tiledLayer];
CGRect viewFrame = self.view.frame;
viewFrame.origin = CGPointZero;
UIScrollView *_scrollView = [[UIScrollView alloc] initWithFrame:viewFrame];
_scrollView.delegate = self;
_scrollView.contentSize = boundsRect.size;
_scrollView.maximumZoomScale = 4;
[_scrollView addSubview:myContentView];
//retain it
self.scrollView=_scrollView;
[self.view addSubview:_scrollView];
[_scrollView release];
//获取pdf裁剪框矩形
cgpdfageref pageRef=[self.pdf getPdfPage:self.myPageNo];
CGRect cropBox=CGRectIntegral(CGPDFPageGetBoxRect(pageRef,kCGPDFCropBox));
//按屏幕大小缩放
CGRect targetRect=self.view.bounds;
CGFloat xScale=targetect.size.width/cropBox.size.width;
CGYScale=targetect.size.height/cropBox.size.height;
self.scale=xScale
请给我指出正确的方向。尝试增加levels的值。详细信息我已经尝试过了,这没有什么区别,谢谢