亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2015年10月28日 09:47:07   作者:念茜  
這篇文章主要介紹了iOS下PDF文件的瀏覽和涂鴉效果的簡單實現(xiàn),代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下

瀏覽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強大的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)

您可能感興趣的文章:

相關(guān)文章

  • 詳解如何攔截iOS所有網(wǎng)絡(luò)請求

    詳解如何攔截iOS所有網(wǎng)絡(luò)請求

    這篇文章主要介紹了詳解如何攔截iOS所有網(wǎng)絡(luò)請求,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • iOS給密碼進行加密的方法

    iOS給密碼進行加密的方法

    這篇文章主要介紹了iOS給密碼進行加密的方法,需要的朋友可以參考下
    2017-06-06
  • IOS App 無代碼入侵的方法hook詳細介紹

    IOS App 無代碼入侵的方法hook詳細介紹

    這篇文章主要介紹了IOS App 無代碼入侵的方法hook詳細介紹的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • iOS遍歷集合(NSArray、NSDictionary、NSSet)的方法總結(jié)

    iOS遍歷集合(NSArray、NSDictionary、NSSet)的方法總結(jié)

    這篇文章主要介紹了iOS集合遍歷(NSArray、NSDictionary、NSSet)的方法,文中給出了詳細的方法示例,并總結(jié)了各個方法的優(yōu)缺點來供大家學(xué)習(xí)參考,需要的朋友們下面來一起看看吧。
    2017-03-03
  • iOS中如何獲取某個視圖的截圖詳析

    iOS中如何獲取某個視圖的截圖詳析

    這篇文章主要給大家介紹了關(guān)于在iOS中如何獲取某個視圖的截圖的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對各位iOS開發(fā)者們有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • iOS開發(fā)-實現(xiàn)大文件下載與斷點下載思路

    iOS開發(fā)-實現(xiàn)大文件下載與斷點下載思路

    本篇文章主要介紹了iOS開發(fā)-實現(xiàn)大文件下載與斷點下載思路,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-01-01
  • ios微信瀏覽器返回不刷新問題完美解決方法

    ios微信瀏覽器返回不刷新問題完美解決方法

    這篇文章主要介紹了ios微信瀏覽器返回不刷新問題完美解決方法,需要的朋友可以參考下
    2017-09-09
  • iOS消息發(fā)送和轉(zhuǎn)發(fā)示例詳解

    iOS消息發(fā)送和轉(zhuǎn)發(fā)示例詳解

    這篇文章主要給大家介紹了關(guān)于iOS消息發(fā)送和轉(zhuǎn)發(fā)的相關(guān)資料,用Objective-C的術(shù)語來講,這叫做“給某個對象發(fā)送某條消息”。文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • iOS常用調(diào)試方法之靜態(tài)分析詳解

    iOS常用調(diào)試方法之靜態(tài)分析詳解

    這篇文章主要給大家介紹了關(guān)于iOS常用調(diào)試方法之靜態(tài)分析的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對各位iOS開發(fā)者們具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • iOS 修改alertViewController彈框的字體顏色及字體的方法

    iOS 修改alertViewController彈框的字體顏色及字體的方法

    下面小編就為大家分享一篇iOS 修改alertViewController彈框的字體顏色及字體的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01

最新評論