最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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實現(xiàn)轉(zhuǎn)盤效果

    iOS實現(xiàn)轉(zhuǎn)盤效果

    這篇文章主要為大家詳細(xì)介紹了iOS實現(xiàn)轉(zhuǎn)盤效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • iOS實現(xiàn)調(diào)用QQ客戶端發(fā)起臨時會話

    iOS實現(xiàn)調(diào)用QQ客戶端發(fā)起臨時會話

    本篇文章主要給大家詳細(xì)分析了用IOS實現(xiàn)調(diào)用QQ客戶端發(fā)起臨時會話的功能,對此有需要的朋友收藏分享下。
    2018-02-02
  • iOS實現(xiàn)滾動字幕的動畫特效

    iOS實現(xiàn)滾動字幕的動畫特效

    這篇文章給大家?guī)硪豢顟?yīng)用非常實用的控件,滾動字幕,可以應(yīng)用在新聞、財經(jīng)、聊天等各類APP上,B格瞬間提升了一個檔次有木有,下面跟著小編一起看看如何實現(xiàn)的吧。
    2016-09-09
  • IOS檢測指定路徑的文件是否存在

    IOS檢測指定路徑的文件是否存在

    本文給大家分享的是在IOS開發(fā)中檢測指定文件是否存在的方法,給大家匯總了4種,十分實用,小伙伴們根據(jù)自己的需求自由選擇吧。
    2015-05-05
  • 談?wù)刬OS中的多繼承與多重代理

    談?wù)刬OS中的多繼承與多重代理

    這篇文章主要給大家介紹了關(guān)于iOS中多繼承與多重代理的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10
  • IOS開發(fā)中如何設(shè)計短信驗證碼防刷機制

    IOS開發(fā)中如何設(shè)計短信驗證碼防刷機制

    給大家詳細(xì)分享一下在IOS的項目開發(fā)中如何設(shè)計短信驗證碼防刷機制,已經(jīng)步驟詳解,喜歡的朋友參考下吧。
    2018-02-02
  • iOS實現(xiàn)容器視圖控制器的方法

    iOS實現(xiàn)容器視圖控制器的方法

    本篇文章給大家詳細(xì)講述了iOS實現(xiàn)容器視圖控制器的方法,對此感興趣的朋友可以測試學(xué)習(xí)下。
    2018-02-02
  • IOS開發(fā)中延遲執(zhí)行和取消

    IOS開發(fā)中延遲執(zhí)行和取消

    這篇文章主要介紹了IOS開發(fā)中延遲執(zhí)行和取消的相關(guān)資料,需要的朋友可以參考下
    2018-01-01
  • iOS APP 多服務(wù)器環(huán)境分離的方法

    iOS APP 多服務(wù)器環(huán)境分離的方法

    這篇文章主要介紹了iOS APP 多服務(wù)器環(huán)境分離的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • iOS實現(xiàn)全局懸浮按鈕

    iOS實現(xiàn)全局懸浮按鈕

    這篇文章主要為大家詳細(xì)介紹了iOS實現(xiàn)全局懸浮按鈕,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03

最新評論

依安县| 镇平县| 仁怀市| 永城市| 合阳县| 阿拉善右旗| 鞍山市| 宁都县| 郴州市| 武陟县| 辉南县| 博野县| 双柏县| 白河县| 台北市| 双桥区| 阳东县| 彭泽县| 彰武县| 岗巴县| 莆田市| 泰州市| 锦州市| 玛多县| 永春县| 吉木乃县| 临夏市| 剑河县| 肇庆市| 临颍县| 托克托县| 红原县| 常州市| 扶绥县| 五常市| 申扎县| 平遥县| 大余县| 淳化县| 阜平县| 六安市|