麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 系統(tǒng) > iOS > 正文

iOS下PDF文件的瀏覽和涂鴉效果的簡單實現(xiàn)

2020-07-26 03:32:57
字體:
供稿:網(wǎng)友

瀏覽PDF的效果
方法一:利用webview

復(fù)制代碼 代碼如下:

-(void)loadDocument:(NSString *)documentName inView:(UIWebView *)webView 

    NSString *path = [[NSBundle mainBundle] pathForResource:documentName ofType:nil]; 
    NSURL *url = [NSURL fileURLWithPath:path]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:url]; 
    [webView loadRequest:request]; 


利:1.實現(xiàn)簡單
        2.還是實現(xiàn)簡單
弊:1.僅能瀏覽,拿不到任何回調(diào),safari不會鳥任何人。
        2.固定豎版拖動,想實現(xiàn)翻頁動效果就扒瞎

2015102894335125.png (424×555)

下面的方法可以解決webview 顯示pdf的弊,相對的,要付出一些汗水作為代價了。

方法二:利用CGContextDrawPDFPage

復(fù)制代碼 代碼如下:

CGPDFDocumentRef GetPDFDocumentRef(NSString *filename) 

    CFStringRef path; 
    CFURLRef url; 
    CGPDFDocumentRef document; 
    size_t count; 
     
    path = CFStringCreateWithCString (NULL, [filename UTF8String], kCFStringEncodingUTF8); 
    url = CFURLCreateWithFileSystemPath (NULL, path, kCFURLPOSIXPathStyle, 0); 
     
    CFRelease (path); 
    document = CGPDFDocumentCreateWithURL (url); 
    CFRelease(url); 
    count = CGPDFDocumentGetNumberOfPages (document); 
    if (count == 0) { 
        printf("[%s] needs at least one page!/n", [filename UTF8String]); 
        return NULL;  
    } else { 
        printf("[%ld] pages loaded in this PDF!/n", count); 
    } 
    return document; 

 
void DisplayPDFPage (CGContextRef myContext, size_t pageNumber, NSString *filename) 

    CGPDFDocumentRef document; 
    CGPDFPageRef page; 
     
    document = GetPDFDocumentRef (filename); 
    page = CGPDFDocumentGetPage (document, pageNumber); 
    CGContextDrawPDFPage (myContext, page); 
    CGPDFDocumentRelease (document); 


這樣顯示出來的pdf單頁是倒立的,Quartz坐標(biāo)系和UIView坐標(biāo)系不一樣所致,調(diào)整坐標(biāo)系,使pdf正立:

復(fù)制代碼 代碼如下:

CGContextRef context = UIGraphicsGetCurrentContext(); 
CGContextTranslateCTM(context, 80, self.frame.size.height-60); 
CGContextScaleCTM(context, 1, -1); 


配合iOS5強(qiáng)大的UIPageViewController實現(xiàn)翻頁瀏覽

復(fù)制代碼 代碼如下:

- (PDFViewController *)viewControllerAtIndex:(NSUInteger)index  

    //Return the PDFViewController for the given index. 
    if (([self.pagePDF count] == 0 )|| (index > [self.pagePDF count]) ) { 
        return nil; 
    } 
     
    //Create a new view controller and pass suitable data. 
    PDFViewController *dataViewController = [[PDFViewController alloc]initWithNibName:@"PDFViewController" bundle:nil]; 
    //dataViewController.pdfview = [self.pagePDF objectAtIndex:index]; 
    dataViewController.pdfview = [[PDFView alloc]initWithFrame:self.view.frame atPage:index]; 
    [dataViewController.view addSubview:dataViewController.pdfview]; 
    NSLog(@"index = %d",index); 
    return dataViewController; 

 
- (NSUInteger) indexOfViewController:(PDFViewController *)viewController 

    return [self.pagePDF indexOfObject:viewController.pdfview]; 

 
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController 

    NSUInteger index = [self indexOfViewController:(PDFViewController *)viewController]; 
    if ((index == 0 ) || (index == NSNotFound)){ 
        return nil; 
    } 
     
    index--; 
    return  [self viewControllerAtIndex:index]; 

 
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController 

    NSUInteger index = [self indexOfViewController:(PDFViewController *)viewController]; 
    if (index == NSNotFound) 
    { 
        return nil; 
    } 
     
    index++; 
     
    if (index == [self.pagePDF count]){ 
        return  nil; 
    } 
     
    return [self viewControllerAtIndex:index]; 


2015102894406303.png (385×514)

2015102894427910.png (385×512)

涂鴉效果
主要涉及:
1. 多context,分層畫畫

復(fù)制代碼 代碼如下:

- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx


2. 觸摸事件touches族那些event

復(fù)制代碼 代碼如下:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
……


3. 初始化單頁view傳頁碼

復(fù)制代碼 代碼如下:

- (id)initWithFrame:(CGRect)frame onPage:(NSInteger)page


4.畫軌跡方法

復(fù)制代碼 代碼如下:

CG_EXTERN void CGPathMoveToPoint(CGMutablePathRef path,
  const CGAffineTransform *m, CGFloat x, CGFloat y)
CG_EXTERN void CGPathAddLineToPoint(CGMutablePathRef path,
  const CGAffineTransform *m, CGFloat x, CGFloat y)


2015102894449261.png (383×512)

2015102894506965.png (386×513)

2015102894558662.png (770×575)

2015102894619851.png (770×577)

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: av成人在线免费观看 | 美女性感毛片 | 2019亚洲日韩新视频 | 韩国精品视频在线观看 | 久久久久久久久久久久免费 | 成人毛片100免费观看 | 久草在线资源观看 | 8x成人在线电影 | 午夜精品成人一区二区 | 黄色一级视频 | 欧美h版在线观看 | 免费一区在线 | h视频免费看 | 亚洲一区二区三区高清视频 | 国产一级二级在线播放 | 97超级碰碰人国产在线观看 | 久草在线视频网 | 少妇一级淫片免费放正片 | 黄色一级片免费在线观看 | 黄色av网站免费看 | 日本羞羞的午夜电视剧 | 国产精品久久久久久久久久久天堂 | 99爱在线免费观看 | 成人精品免费看 | 精品一区二区三区免费毛片爱 | 亚洲极色 | 久久久久国产一区二区三区不卡 | 国产毛片自拍 | 姑娘第5集高清在线观看 | 亚洲成人精品久久久 | 欧洲成人一区二区 | 久久精品一区二区三 | 国产日韩欧美一区 | 一级大黄毛片 | 极品销魂一区二区三区 | 在线观看国产日韩 | 毛片网站视频 | 91重口视频 | 色视频在线 | 亚洲精品aⅴ中文字幕乱码 欧美囗交 | 特色一级黄色片 |