跳轉網頁的方法介紹

1.為什么要跳轉網頁?
點擊UICollectionView的cell我們發現跳轉到了網頁

2.在以后開發中,怎么判斷一個界面是不是網頁?
2.1根據服務器返回的數據 如果是網頁 會有網頁的url
2.2根據界面的一些圖標,或者是根據響應速度,如果是自己設計的界面跳轉會很流暢很快

3.怎么跳轉到網頁
3.1 openURL
openURl(safari) 好處:有很多功能(前進,后退,刷新,進度條,地址欄) 弊端:必須要離開當前app
3.2 UIWebView 好處:當前app展示網頁 弊端:沒有功能
3.3 WKWebView:UIVebView的升級版 ios8

     優點: "1)性能提升:將瀏覽器內核渲染進程提取出 App,由系統進行統一管理,這減少了相當一部分的性能損失。
                "2)允許JavaScript的Nitro庫加載并使用(UIWebView中限制)
                "3)支持了更多的HTML5特性
                "4)高達60fps的滾動刷新率
                "5)提供了內置手勢探測
                "6)可以監聽網頁加載進度
       弊端:沒有功能
               目前在7.3版本的XCode控件庫中還找不到WKWebView控件,也就是說如果想要使用該控件,則只能通過代碼的方式來創建。
               需要包含WebKit框架

3.4 iOS9:SFSafariViewController(展示網頁),在當前app展示網頁,并且有safari所有功能
缺點: 必須要導入SafariServices/SafariServices.h 只有ios9或ios9以上的用戶才能用
3.4.1基本使用:
> XTSquareItem *item = _squares[indexPath.row];
判斷是否是url不是就返回
if (![item.url containsString:@"http"]) return;

     NSURL *url = [NSURL URLWithString:item.url];

     SFSafariViewController *safariVc = [[SFSafariViewController alloc] initWithURL:url];
     [self.navigationController pushViewController:safariVc animated:YES];

3.4.2跳轉過去后發現地址欄被導航條擋住了 怎么解決?
隱藏該導航控制器下的所有導航條 寫在點擊cell的時候調用的代理方法里面
> self.navigationController.navigationBarHidden = YES;

3.4.3還發現我們不能返回了,左上角有一個done按鈕, 怎么返回?
我們去SFSafariViewController頭文件去搜索done 看有沒有方法監聽這個按鈕的點擊 我們發現下面這個代理方法
還發現敲代理方法的時候,說明done這個會dismiss掉Safari view 那么SFSafariViewController應該是modal出來的

       #pragma mark - SFSafariViewControllerDelegate
 - (void)safariViewControllerDidFinish:(SFSafariViewController *)controller
 {
     [self.navigationController popViewControllerAnimated:YES];
     self.navigationController.navigationBarHidden = NO;    顯示導航條
 }

3.4.4跳轉之后返回 發現本界面也沒有導航條了 怎么解決?
在上面的代理方法里面把隱藏導航條取消
3.4.5把 SFSafariViewController modal出來 我們就可以點擊done 不設置代理 返回嗎?
驗證我們的猜測是對的
> [self presentViewController:safariVc animated:YES completion:nil];
.
4.需求:必須在當前app展示網頁,但是也想要有safari功能(自己實現),UIWebView實現不了進度條功能
4.1 一般情況下我們看到的UIWebView的進度條都是假象
4.2 WKWebView 和 UIWebView 的使用基本上是一樣的
4.3 我們使用 WKWebView來實現

5.用WKWebView怎么實現點擊cell跳轉到網頁
5.1 根據項目需求,跳轉后的界面 由三部分組成
1.網頁界面用WKWebView搭建 (要先設置占位視圖,然后把WKWebView添加到展位視圖里面,避免擋住底部工具條)
2. 底部的工具條 用 Toolbar 控件搭建 里面的 按鈕用UIBarButtonItem搭建
注意:按鈕之間的間距我們要用一個Flexible Space(彈簧)來彈開
3.上面的地址欄 我們就用導航條來替換
4.界面固定,可以用xib來描述
5.創建一個控制器來管理xib的業務邏輯
5.2 怎么實現點擊cell跳轉網頁?
點擊cell的時候,把WKWebView所在的控制器push出來就可以了
注意:
5.3 WKWebView的基本使用
1 創建WKWebView對象
2 加載網頁
> // 創建WebView
WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.bounds];
// 加載網頁
NSURLRequest *request = [NSURLRequest requestWithURL:_url];
[webView loadRequest:request];

  1. 前進 后退 刷新 進度條 功能實現 怎么實現?
    去WKWebView頭文件里找相關的屬性和方法(搜索相關方法或屬性名)
    找到一些可用的方法和屬性,而且還看到關于屬性的用法 用kvo實現
    @property (nullable, nonatomic, readonly, copy) NSString *title;
    @property (nullable, nonatomic, readonly, copy) NSURL *URL;
    @property (nonatomic, readonly) double estimatedProgress;
    @property (nonatomic, readonly) BOOL canGoBack;
    @property (nonatomic, readonly) BOOL canGoForward;
    - (nullable WKNavigation *)goBack;
    - (nullable WKNavigation *)goForward;
    - (nullable WKNavigation *)reload;
    4.kvo怎么使用?有哪些注意點?
    給需要監聽的屬性添加觀察者,然后實現代理方法就可以了
    KVO作用:監聽屬性改變
    Observer:觀察者
    KeyPath:屬性
    - (void)addObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath options:(NSKeyValueObservingOptions)options
    context:(nullable void *)context;

KVO使用注意點:當對象銷毀的時候,一定要記得移除觀察者
5.代理方法是什么? 怎么找?
找到kvo的方法(上面的那個方法),看一下蘋果的介紹,里面有說明怎么用
查看說明的方法就是 點擊一下方法 再按住option 會出現一個?號 點擊就可以查看 里面有需要實現的代理方法

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,791評論 6 545
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,795評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,943評論 0 384
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 64,057評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,773評論 6 414
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,106評論 1 330
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,082評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,282評論 0 291
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,793評論 1 338
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,507評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,741評論 1 375
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,220評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,929評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,325評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,661評論 1 296
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,482評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,702評論 2 380

推薦閱讀更多精彩內容

  • 前言 給大家介紹另外一種基于 iOS 8 新推出的 WKWebView 組件,構建出自己的混合開發框架。 WKWe...
    iwolfox閱讀 1,141評論 1 3
  • 前言 關于UIWebView的介紹,相信看過上文的小伙伴們,已經大概清楚了吧,如果有問題,歡迎提問。 本文是本系列...
    CoderLF閱讀 9,010評論 2 12
  • 1. 利用 WKWebView 進行交互(系統 API) 2. 利用 UIWebView 進行交互(系統 API)...
    ElvisSun閱讀 999評論 0 1
  • http://www.cnblogs.com/mddblog/p/5281748.html 一、整體介紹 UIWe...
    F麥子閱讀 1,250評論 0 2
  • 1 記得本科時候 數學分析課 經常在上午的10-12.00 那個時候大家一般都處于饑餓狀態 至少當時的我是那個樣子...
    懿人行走閱讀 324評論 0 0