zoukankan      html  css  js  c++  java
  • iOS

    最近项目中要加载一个本地的word/pdf等文件比如《用户隐私政策》《用户注册说明》,有两种方法加载

    1 > 用QLPreviewController控制器实现
    
       步骤 : 1 > 导入库文件 : QuickLook.framework
    
                2 > 导入头文件 : <QuickLook/QuickLook.h>
    
                3 > 创建我们的对象,然后设置dataSource
    
    2 > 用webView来加载word文件

    以上两种方法都先把本地word/pdf文件拖入当我们的项目中

    有时候会出现path为nil,看看是不是没加进Build Phases-Copy Bundle Resources资源
    /*
     方法1使用:
     1、导入库文件:QuickLook.framework
     2、导入头文件:<QuickLook/QuickLook.h>
     */
    #import <QuickLook/QuickLook.h>
    
    @interface ViewController ()<QLPreviewControllerDataSource,UIWebViewDelegate>
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        // 方法1:用QLPreviewController控件实现
        [self QLPreviewControllerLoad];
        
        // 方法2:用WebView的方法加载word
        [self webViewLoad];
        
    }
    
    #pragma mark -- QLPreviewController
    - (void)QLPreviewControllerLoad {
        self.view.backgroundColor = [UIColor lightGrayColor];
        QLPreviewController *qlpVC = [[QLPreviewController alloc] init];
        qlpVC.dataSource = self;
        [self presentViewController:qlpVC animated:YES completion:nil];
    }
    
    - (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller {
        return 1;//需要显示文件的个数
    }
    - (id<QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index {
        NSString *path = [[NSBundle mainBundle] pathForResource:@"顺道用户隐私政策.docx" ofType:nil];
        NSURL *url = [NSURL fileURLWithPath:path];
        return url;
    }
    
    #pragma mark -- WebView
    - (void)webViewLoad {
        NSString *path = [[NSBundle mainBundle] pathForResource:@"顺道用户隐私政策" ofType:@"docx"];
        NSURL *url = [NSURL fileURLWithPath:path];
        UIWebView *webView = [[UIWebView alloc] init];
        webView.frame = CGRectMake(0, 0, kScreen_width, kScreen_height);
        webView.backgroundColor = [UIColor whiteColor];
        [webView loadRequest:[NSURLRequest requestWithURL:url]];
        [webView sizeToFit];
        webView.scalesPageToFit = YES;
        webView.delegate = self;
        [self.view addSubview:webView];
        
    }
    
    - (void)webViewDidFinishLoad:(UIWebView *)webView {
        NSLog(@"webViewDidFinishLoad");
        NSString *javascript = [NSString stringWithFormat:@"var script = document.createElement('script');"
                                "script.type = 'text/javascript';"
                                "script.text = "function ResizeImages() { "
                                "var myimg;"
                                "var maxwidth=%f;" //缩放系数
                                "for(i=0;i <document.images.length;i++){"
                                "myimg = document.images[i];"
                                "if(myimg.width > maxwidth){"
                                "var scale = myimg.width/myimg.height;"
                                "myimg.width = maxwidth;"
                                "myimg.height = maxwidth/scale;"
                                "}"
                                "}"
                                "}";"
                                "document.getElementsByTagName('head')[0].appendChild(script);",CGRectGetWidth(webView.frame)];
        [webView stringByEvaluatingJavaScriptFromString:javascript];
        
        //添加调用JS执行的语句
        [webView stringByEvaluatingJavaScriptFromString:@"ResizeImages();"];
    }


  • 相关阅读:
    修改element ui 默认样式最好的解释
    python全栈开发day92-day96 Vue总结
    跨域资源共享 CORS 详解(转自阮一峰博客)
    Vue axios 返回数据绑定到vue对象问题
    Vue爬坑之路
    input标签checkbox选中触发事件的方法
    python中super的理解(转)
    Django时区的解释
    django 视图函数返回queryset对象或日期对象至浏览器ajax接收的写法
    python全栈开发day87~91-整个流程梳理、CRM功能、知识点梳理
  • 原文地址:https://www.cnblogs.com/gongyuhonglou/p/10511682.html
Copyright © 2011-2022 走看看