Hybrid App(一)

在iOS開(kāi)發(fā)的過(guò)程中我們可能會(huì)遇到混合開(kāi)發(fā)的情況,但并不是使用UIWebView簡(jiǎn)單的調(diào)用網(wǎng)頁(yè),往往需要我們和網(wǎng)頁(yè)進(jìn)行交互,本文將和大家共同探討iOS混合開(kāi)發(fā)的那些事。

一、手機(jī)軟件開(kāi)發(fā)模式介紹

目前手機(jī)app的開(kāi)發(fā)模式無(wú)外乎三種:

1.Native App,原生APP,使用原生SDK和IDE開(kāi)發(fā)的基于iOS和Android的APP;Native App性能好,用戶體驗(yàn)好,但是也有弊端,開(kāi)發(fā)周期長(zhǎng)、不能跨平臺(tái)、版本更新復(fù)雜。

2.Web App,即網(wǎng)頁(yè)APP,手機(jī)相當(dāng)于一個(gè)瀏覽器,這種模式開(kāi)發(fā)簡(jiǎn)單,但是訪問(wèn)速度慢、用戶體驗(yàn)差。

3.Hybrid App,混合APP,綜合了Web App的開(kāi)發(fā)速度和Native App的高性能體驗(yàn)。

二、Hybrid App中iOS和html的交互 ?demo下載

1.本節(jié)中用到的html文件內(nèi)容為:html文件下載


html文件

2.使用UIWebView加載html文件,可以加載本地的html文件或者網(wǎng)頁(yè)文件,本節(jié)中選擇加載本地文件。


加載html文件


3.如果此時(shí)你想把“標(biāo)題”刪除,但是不通過(guò)修改html文件的方法,使用iOS的修改就可以在UIWebView的代理方法-(void)webViewDidFinishLoad:(UIWebView*)webView中用webView調(diào)用js代碼去刪除html中的元素,具體代碼如下:


刪除title標(biāo)簽


刪除標(biāo)簽

此時(shí)你又發(fā)現(xiàn)“陌子夕”實(shí)際應(yīng)該為“夕子陌”,我們也可以使用iOS調(diào)用修改標(biāo)簽的內(nèi)容,代碼如下:



代碼


修改標(biāo)簽

此時(shí)需求又讓你在虹口下面添加一張圖片,代碼如下:


插入圖片


添加圖片

修改“虹口”字體的大小:


修改字體大小


字體變大

修改字體顏色和網(wǎng)頁(yè)的背景顏色:



修改顏色


修改顏色

以上是在iOS端修改html網(wǎng)頁(yè)的界面元素,主要使用了UIWebView的代理方法:-(void)webViewDidFinishLoad:(UIWebView*)webView,然后編寫js代碼,用webView通過(guò)方法:- (nullableNSString*)stringByEvaluatingJavaScriptFromString:(NSString*)script去調(diào)用js代碼。

4、捕獲html上按鈕的點(diǎn)擊事件,然后就可以在本地適當(dāng)?shù)臅r(shí)候處理一些事件。主要也是使用了UIWebView的代理方法:

-(BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType,

當(dāng)點(diǎn)擊html文件上的按鈕時(shí)就會(huì)觸發(fā)這個(gè)代理方法,(本文中使用UIWebView調(diào)用百度的主頁(yè),然后點(diǎn)擊搜索的時(shí)候讓網(wǎng)頁(yè)彈出提示:加載新聞失敗了);

代碼為:

-(BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType

{

NSURL*URL = request.URL;

NSString*urlStr = URL.absoluteString;

if([urlStr isEqualToString:@"http://m.news.baidu.com/news?fr=mohome&ssid=0&from=844b&uid=&pu=sz%401320_2001%2Cta%40iphone_1_9.3_3_601&bd_page_type=1"]) {

[webView stringByEvaluatingJavaScriptFromString:@"alert('加載新聞失敗了')"];

returnNO;

}

returnYES;

}


效果圖

三、總結(jié)

在iOS中操作html的幾個(gè)步驟:

1.利用UIWebView加載本地html資源或者網(wǎng)絡(luò)上html資源;

2.設(shè)置UIWebView的代理為當(dāng)前視圖控制器,并遵守協(xié)議;

3.用類選擇器或者id選擇器或者標(biāo)簽選擇器等選擇要進(jìn)行操作的標(biāo)簽;

4.把獲取到的標(biāo)簽轉(zhuǎn)換成js代碼的字符串;

5.UIWebView對(duì)象調(diào)用stringByEvaluatingJavaScriptFromString方法執(zhí)行js代碼。

iOS監(jiān)聽(tīng)html文件的步驟是:

1.利用UIWebView加載本地html資源或者網(wǎng)絡(luò)上html資源;

2.設(shè)置UIWebView的代理為當(dāng)前視圖控制器,并遵守協(xié)議;

3.獲取到將要加載的html資源的鏈接;

4.在代理方法中URL.absoluteString是否和上述獲取的鏈接相同;

5.根據(jù)判斷結(jié)果處理需求。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,251評(píng)論 4 61
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,466評(píng)論 25 708
  • 有時(shí)想人生不過(guò)就像是浮萍一般漂流在這個(gè)世界中,被社會(huì)的滾滾潮流裹挾著奔流向前。在大的時(shí)代背景下,個(gè)人的命運(yùn)在某種程...
    王秦穎閱讀 1,153評(píng)論 3 4
  • 跟隨老師繼續(xù)學(xué)習(xí)南懷瑾大師講解的《論語(yǔ)別裁》。今天講到閔子騫孝悌的故事,我們都知道閔子騫是二十四孝子之一。孔子對(duì)他...
    心如蓮花_fea1閱讀 905評(píng)論 1 7
  • 1) 和羅天在一起,是因?yàn)殄X,這一點(diǎn)我沒(méi)有對(duì)他避諱過(guò),他也欣然接受。當(dāng)我習(xí)慣式回問(wèn)他為什么喜歡我的時(shí)候,他說(shuō),我叫...
    一只失憶的貓_閱讀 230評(píng)論 0 0