【问题标题】:Problem with pdf while opening in UIWebView在 UIWebView 中打开时出现 pdf 的问题
【发布时间】:2011-07-13 09:40:58
【问题描述】:

在 UIWebView 中打开 pdf 时遇到问题。放大和缩小不起作用,甚至双击也无法放大 pdf 字体大小。
伙计们有什么办法可以做到这一点....
如果没有,任何人都可以分享一些代码....

【问题讨论】:

    标签: iphone pdf


    【解决方案1】:
    
        #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
    

    将此添加到您的项目中...
    希望对您有所帮助....

    【讨论】:

      【解决方案2】:

      确保 UIWebView 启用了«Multiple Touch»。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多