<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>電子資料>KSWebView基于WKWebview進行二次封裝的WebView

KSWebView基于WKWebview進行二次封裝的WebView

2022-06-24 | zip | 0.47 MB | 次下載 | 免費

資料介紹

授權協議 未知
開發語言 Objective-C
軟件類型 開源軟件
所屬分類 iOS代碼庫、 網頁(Webview)

軟件簡介

KSWebView,最好的 WKWebView 繼承者。

KSWebView是基于WKWebview進行2次封裝的WebView。

KSWebView具有:

  • 用JS語句的方式調用原生類/對象,方便快捷,老板提出來的臨時需求也能馬上解決的方式。

  • 無縫JS與原生交互 (原生與JS獲得各自的Return值) (一句語句注冊JS方法調用回調)

  • 無縫JS與原生數據交互 丟棄cookie,數據由自己自由的管理,而且與原生互通。

  • 本地數據存儲模塊支持KVO,當數值發生變化時,注冊了該值的觀察者無論原生還是JS端都可以收到更新回調

KSWebView的整體結構如下圖?

pYYBAGKp4IWAQYbFAAIQ8J6YiOk441.png

用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

?

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數據手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>