陈浩
陈浩
  • 发布:2016-07-18 09:47
  • 更新:2016-07-18 11:01
  • 阅读:1354

NJS怎么调用IOS全局函数?

分类:Native.js

详细问题描述
IOS版本:
做webview的截屏功能,需要用NJS实现

UIGraphicsBeginImageContext(webView1.bounds.size);  
[webView1.layer renderInContext:UIGraphicsGetCurrentContext()];  
UIImage *image1 = UIGraphicsGetImageFromCurrentImageContext();

发现‘UIGraphicsBeginImageContext’这类函数没有类可以引用,请问怎么在NJS调用这种函数?

2016-07-18 09:47 负责人:无 分享
已邀请:
骁骑

骁骑

NJS暂时不能调用这种全局的函数

  • 陈浩 (作者)

    那么IOS的webview截所有内容生成图片做不了?

    2016-07-18 10:58

  • DCloud_IOS_XTY

    可以自己写插件

    2016-07-18 10:59

  • 陈浩 (作者)

    回复 DCloud_IOS_XTY:写插件就麻烦了,还要自己购买MAC电脑,本地生成等等,你们这个平台的优势就没有了。

    2016-07-18 11:03

陈浩

陈浩 (作者)

Android版本webview截全屏NJS代码:

function capturePicture_android(){  
        var waiting = plus.nativeUI.showWaiting( "正在生成图片..." );  
        var Bitmap = plus.android.importClass("android.graphics.Bitmap");  
        var Canvas = plus.android.importClass("android.graphics.Canvas");  
        var view = plus.webview.currentWebview().nativeInstanceObject();  
        plus.android.invoke(view,"setDrawingCacheEnabled",true);  
        plus.android.invoke(view,"buildDrawingCache");  
        var width = plus.android.invoke(view,"getWidth");  
        var height = plus.android.invoke(view,"getContentHeight");  
        var scale = plus.android.invoke(view,"getScale");//WebView 缩放比例  
        var bitmap = Bitmap.createBitmap(width, height*scale, Bitmap.Config.ARGB_8888);   
        var canvas = new Canvas(bitmap);  
        plus.android.invoke(view,"draw",canvas);  
        if (bitmap != null) {  
            var File = plus.android.importClass("java.io.File");  
            var FileOutputStream = plus.android.importClass("java.io.FileOutputStream");  
            try{  
                var newFilePath = plus.io.convertLocalFileSystemURL('_doc/xxx.png');  
                var file = new File(newFilePath);  
                file.createNewFile();  
                var fos = new FileOutputStream(file);  
                bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);  
                fos.flush();  
                fos.close();  
                console.log("写入文件成功");   
                plus.gallery.save( '_doc/xxx.png', function () {  
                    console.log( "保存图片到相册成功" );  
                    plus.runtime.openFile( newFilePath,null, function ( e ) {  
                        console.log( "Open system default browser failed: " + e.message );  
                        plus.nativeUI.toast('openFile:'+e.message);  
                    } );  
                },function(){  
                    console.log( "保存图片到相册失败" );  
                    plus.nativeUI.toast('保存图片到相册失败!');    
                });  
            }catch(e){  
                console.log(e.message);  
                plus.nativeUI.toast('截图成功,输出失败!');  
            }finally {//无论 try / catch 结果如何都会执行的代码块  
                if(!bitmap.isRecycled())bitmap.recycle();  
                waiting.close();  
            }  
        }else{  
            console.log("截图失败,请重试");  
            plus.nativeUI.toast('截图失败,请重试!');    
            waiting.close();  
        }  
    }

该问题目前已经被锁定, 无法添加新回复