PDF和缩放 - CATiledLayer

时间:2011-06-29 19:24:56

标签: iphone xcode pdf zoom catiledlayer

我有一个问题,我不是程序员,但我尝试做一些应用程序以获得乐趣。 我尝试创建一个pdf查看器,我创建一个这样的UIView类:

- (id)initWithFrame:(CGRect)frame {

    self = [super initWithFrame:(CGRect)frame];
    if (self) {
        self.backgroundColor = [UIColor clearColor];
        NSString *pathToPdfDoc = [[NSBundle mainBundle] pathForResource:@"myPDF" ofType:@"pdf"];
        NSURL *pdfUrl = [NSURL fileURLWithPath:pathToPdfDoc];
        document = CGPDFDocumentCreateWithURL((CFURLRef)pdfUrl);
        currentPage = 1;
    }
    return self;
}

-(void)drawRect:(CGRect)inRect{                 
    if(document) {
        CGPDFPageRef page = CGPDFDocumentGetPage(document, currentPage);
        CGContextRef ctx = UIGraphicsGetCurrentContext();
        CGContextSaveGState(ctx);
        CGContextTranslateCTM(ctx, 0.0, [self bounds].size.height);
        CGContextScaleCTM(ctx, 1.0, -1.0);
        CGContextConcatCTM(ctx, CGPDFPageGetDrawingTransform(page, kCGPDFCropBox, [self bounds], 0, true));
        CGContextDrawPDFPage(ctx, page);    
        CGContextRestoreGState(ctx);
    }
}

-(void)increasePageNumber {
    size_t pageCount = CGPDFDocumentGetNumberOfPages(document);
    if (currentPage == pageCount) {
        // do nothing
    }
    else {
        currentPage++;
        [self setNeedsDisplay];
    }
}

-(void)decreasePageNumber {
    if (currentPage == 1) {
        // do nothing
    }
    else {
        currentPage--;
        [self setNeedsDisplay];
    }
}

现在我尝试添加缩放但没有运气,从缩放我创建一个图层:

-(void)viewDidLoad {
    CGRect frame;

    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
        frame = CGRectMake(0, 0, 960, 1024);

    }
    else{
        frame = CGRectMake(0, 0, 320, 460);

    }

    tiledLayer = [CATiledLayer layer];
    tiledLayer.delegate = self;
    tiledLayer.tileSize = CGSizeMake(1024, 1024);
    tiledLayer.levelsOfDetail = 200;
    tiledLayer.levelsOfDetailBias = 200;
    tiledLayer.frame = frame;

    myPDFView = [[viewPDF alloc] initWithFrame:frame];   
    //[self.view addSubview:myPDFView];  

    [myPDFView.layer addSublayer:tiledLayer];

    CGRect viewFrame = self.view.frame;
    viewFrame.origin = CGPointZero;
    scrollView = [[UIScrollView alloc] initWithFrame:viewFrame];
    scrollView.delegate = self;
    scrollView.contentSize = frame.size;
    scrollView.maximumZoomScale = 5;
    [scrollView addSubview:myPDFView];

    [self.view addSubview:scrollView];

}

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
    return myPDFView;
}
编辑:缩放工作,我使用shouldAutorotateToInterfaceOrientation这是问题(我需要重写一些代码),现在它工作但是当我缩放质量恶化。 :(

0 个答案:

没有答案