2011-07-13 6 views
2

UIWebViewでpdfを開く際に問題があります。拡大/縮小は機能せず、ダブルタップでもpdfフォントのサイズは拡大しません。
みんなそれを行うにはどのような方法がある....
誰でもいくつかのコードを共有することができない場合は....UIWebViewで開くときのPDFに関する問題

答えて

3

    #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

:ありがとうございました.... – Sampath

0

UIWebViewで«複数のタッチ»が有効になっていることを確認してください。

関連する問題