Проблема с PDF при открытии в UIWebView - PullRequest
2 голосов
/ 13 июля 2011

У меня проблема при открытии PDF в UIWebView. Увеличение и уменьшение не работает, и даже двойное нажатие не увеличивает размер шрифта pdf.
Ребята, есть ли способ сделать это ....
Если нет, то кто-нибудь может поделиться каким-нибудь кодом ...

Ответы [ 2 ]

3 голосов
/ 13 июля 2011

    #import 


    @interface TiledPDFView :  UIView {
        CGPDFPageRef pdfPage;
        CGFloat myScale;

    }

    - (id)initWithFrame:(CGRect)frame andScale:(CGFloat)scale;
    - (void)setPage:(CGPDFPageRef)newPage;

    @end



    #import "TiledPDFView.h"
    #import 

    @implementation TiledPDFView


    // Create a new TiledPDFView with the desired frame and scale.
    - (id)initWithFrame:(CGRect)frame andScale:(CGFloat)scale{
        if ((self = [super initWithFrame:frame])) {

            CATiledLayer *tiledLayer = (CATiledLayer *)[self layer];

            tiledLayer.levelsOfDetail = 4;
            tiledLayer.levelsOfDetailBias = 4;
            tiledLayer.tileSize = CGSizeMake(512.0, 512.0);
            myScale = scale;
        }
        return self;
    }

    // Set the layer's class to be CATiledLayer.
    + (Class)layerClass {
        return [CATiledLayer class];
    }

    // Set the CGPDFPageRef for the view.
    - (void)setPage:(CGPDFPageRef)newPage
    {
        CGPDFPageRelease(self->pdfPage);
        self->pdfPage = CGPDFPageRetain(newPage);
    }

    -(void)drawRect:(CGRect)r
    {
        // UIView uses the existence of -drawRect: to determine if it should allow its CALayer
        // to be invalidated, which would then lead to the layer creating a backing store and
        // -drawLayer:inContext: being called.
        // By implementing an empty -drawRect: method, we allow UIKit to continue to implement
        // this logic, while doing our real drawing work inside of -drawLayer:inContext:
    }


    // Draw the CGPDFPageRef into the layer at the correct scale.
    -(void)drawLayer:(CALayer*)layer inContext:(CGContextRef)context
    {
        // First fill the background with white.
        CGContextSetRGBFillColor(context, 1.0,1.0,1.0,0.5);
        CGContextFillRect(context,self.bounds);

        CGContextSaveGState(context);
        // Flip the context so that the PDF page is rendered
        // right side up.
        CGContextTranslateCTM(context, 0.0, self.bounds.size.height);


        // Scale the context so that the PDF page is rendered 
        // at the correct size for the zoom level.
        CGContextScaleCTM(context, myScale,myScale);    
        CGContextDrawPDFPage(context, pdfPage);
        CGContextRestoreGState(context);

    }

    // Clean up.
    - (void)dealloc {
        CGPDFPageRelease(pdfPage);

        [super dealloc];
    }


    @end

Добавьте это в свой проект ...
Надеюсь, это помогло ....

0 голосов
/ 08 июля 2013

Убедитесь, что «Multiple Touch» включен для UIWebView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...