KSWebView基于WKWebview進行二次封裝的WebView
資料介紹
軟件簡介
KSWebView,最好的 WKWebView 繼承者。
KSWebView是基于WKWebview進行2次封裝的WebView。
KSWebView具有:
-
用JS語句的方式調用原生類/對象,方便快捷,老板提出來的臨時需求也能馬上解決的方式。
-
無縫JS與原生交互 (原生與JS獲得各自的Return值) (一句語句注冊JS方法調用回調)
-
無縫JS與原生數據交互 丟棄cookie,數據由自己自由的管理,而且與原生互通。
-
本地數據存儲模塊支持KVO,當數值發生變化時,注冊了該值的觀察者無論原生還是JS端都可以收到更新回調
KSWebView的整體結構如下圖?
用JS語句的方式調用原生類/對象
例如我們想要在JS中執行下列OC代碼
Objective-C:
UIViewController?*vc?=?[[UIViewController?alloc]init]; [vc?setTitle:@"測試標題"]; UIColor?*whiteColor?=?[UIColor?whiteColor]; [[vc?view]?setBackgroundColor:whiteColor]; [[vc?view]?setTag:17287]; UINavigationController?*nav?=?[[[UIApplication?sharedApplication]?keyWindow]?rootViewController]; [nav?pushViewController:vc?animated:YES];
JavaScript:
//先導入要用到的OC類 var?tools?=?window.OCTools; var?UIViewController?=?tools.importClass("UIViewController"); var?UIColor?=?tools.importClass("UIColor"); var?UIApplication?=?tools.importClass("UIApplication"); var?vc?=?UIViewController.alloc().init(); vc.setTitle("測試標題"); var?white?=?UIColor.whiteColor(); vc.view().setBackgroundColor(white); vc.view().setTag(17287); var?nav?=?UIApplication.sharedApplication().keyWindow().rootViewController(); nav.pushViewControlleranimated(vc,?true); tools.releaseObjects();//調用完畢后為了防止內存溢出必須釋放
是不是很簡單?只要先導入要用到的類,然后就和用JS寫一個OC代碼一樣簡單!需要注意的是,調用多個參數的方法時需要去掉所有的冒號,然后將參數一次按順序放入傳參括號內,就可以了。例如:
Objective-C:
UIAlertView?*alert?=?[[UIAlertView?alloc]initWithTitle:@"提示"?message:@"描述信息"?delegate:nil?cancelButtonTitle:@"關閉"?otherButtonTitles:nil]; [alert?show];
JavaScript:
var?UIAlertView?=?window.OCTools.importClass("UIAlertView"); var?alert?=?UIAlertView.alloc().initWithTitlemessagedelegatecancelButtonTitleotherButtonTitles("提示","描述信息",null,"關閉",null); alert.show(); window.OCTools.releaseObjects();//調用完畢后為了防止內存溢出必須釋放
返回值類型
一切js可以識別的格式都是可以被js直接使用的(例如:string,number 等等).oc對象結構體等變量承接之后只可以當作方法傳的值,因為js無法識別。這是必然,js是無法使用oc對象的。例如:
Objective-C:
UIAlertView?*alert?=?[[UIAlertView?alloc]initWithTitle:@"提示"?message:@"描述信息"?delegate:nil?cancelButtonTitle:@"關閉"?otherButtonTitles:nil]; [alert?setTag:15269]; [alert?setTitle:@"新標題"]; NSInteger?tag?=?[alert?tag]; NSString?*title?=?[alert?title]; [alert?show];
JavaScript:
var?UIAlertView?=?window.OCTools.importClass("UIAlertView"); var?alert?=?UIAlertView.alloc().initWithTitlemessagedelegatecancelButtonTitleotherButtonTitles("提示","描述信息",null,"關閉",null); alert.setTag(15269); alert.setTitle("新標題"); var?tag?=?alert.tag();//返回的number是可以直接使用的 var?title?=?alert.title();//返回的string是可以直接使用的 alert.show(); window.OCTools.releaseObjects();//調用完畢后為了防止內存溢出必須釋放
Dictionary與Array
快速的將JS對象轉換為NSDictionary或將JS數組轉換為NSArray
Dictionary:
var?data?=?{ 'key':?'value', 'anyKey':?'anyValue' }; //將JS對象轉換為NSDictionary var?NSDictionary?=?window.OCTools.importClass("NSDictionary"); var?dict?=?NSDictionary.dictionaryWithDictionary(data); //將NSDictionary轉換為JS對象 var?jsonString?=?dict.mj_JSONString(); var?jsObject?=?JSON.parse(jsonString); window.OCTools.releaseObjects();//調用完畢后為了防止內存溢出必須釋放
Array:
var?data?=?["NO.1",?"NO.2",?"NO.3",?"NO.4"]; //將JS對象轉換為NSDictionary var?NSArray?=?window.OCTools.importClass("NSArray"); var?arr?=?NSArray.arrayWithArray(data); //將NSDictionary轉換為JS對象 var?jsonString?=?arr.mj_JSONString(); var?jsArray?=?JSON.parse(jsonString); window.OCTools.releaseObjects();//調用完畢后為了防止內存溢出必須釋放
其實本質上JS的對象/數組可以直接當做NSDictionary/NSArray參數傳遞,上述只是提供了互相轉換的方法。
importClass:??該方法在內部已經實現了不管你重復import多少次相同的Class都拿到的是相同的一個,所以放心大膽的用,不用擔心,不過最好將其放在界面加載完成后importClass,防止出現問題。
releaseObjects:?因為內部對象都是有引用的所以只有調用了此方法才會銷毀所有對象,如果長期不銷毀內存會越來越大,嚴重就會導致崩潰,所以請盡量在使用完oc調用后調用此方法來銷毀所有oc對象。
關于無縫JS與原生交互/本地數據存儲模塊支持KVO的介紹請查看demo
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
- 线路电镀(二次铜).zip6次下载
- labview字符串控件二次封装4次下载
- DCDC二次电源辐射特性研究7次下载
- 基于光华逼近函数的求解凸二次规划方法3次下载
- 什么是一次电源?什么是二次电源?资料下载19次下载
- 基于风险传递网络的智能变电站二次系统风险评估1次下载
- 针对二次再热机组DEH建模分析0次下载
- 电气二次接线识图正文94次下载
- 电气二次接线识图0次下载
- LED路灯的二次光学设计4次下载
- AutoCAD VBA二次开发教程0次下载
- 二次调节流量耦联系统功率匹配研究16次下载
- 新型二次电池材料18次下载
- 基于约束判决的二次门限检测12次下载
- 二次电池的特性和应用17次下载
- 什么是集成电路新建项目机电二次配?589次阅读
- 电力系统一次设备和二次设备区别,二次回路的分类3628次阅读
- 二次回路的基本概念6150次阅读
- 关于二次回路工作的安全规定5349次阅读
- 二次回路简述901次阅读
- 自动焊接工艺的次焊接和二次焊接的区别及优缺点分析9295次阅读
- 电流互感器二次侧接地原因26055次阅读
- 二次回路的作用9500次阅读
- 电气二次回路的看图口诀8956次阅读
- 什么是二次设备?二次设备有哪些55450次阅读
- 电气二次常见问题有哪些_40个电气二次常见问题盘点5475次阅读
- 二次电池是什么_二次电池有哪些_二次电池充放电方程式24214次阅读
- mapreduce二次排序_ mapreduce二次排序原理6358次阅读
- 电气二次回路看图5大口诀的详细分析73149次阅读
- 基于TDD-LTE终端二次谐波的抑制应用设计3338次阅读
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論