iOS開發--UIWebView

UIWebView-->iOS進行混合開發的橋樑,在iOS開發中常用於加載網頁和html文件

現在對於混合式(傳統模式與PC網頁端相結合)移動端開發(開發成本低、速度快)越來越流行。在Android開發中有WebView作爲混合模式開發的橋樑,在iOS中也同樣有一個 UIWebView 組件來作爲混合模式開發的橋樑。

1.初始化[繼承自UIView]

繼承自UIView,所以初始化方法類似UIView

eg:

UIWebView *webView = [[UIWebView alloc]initWithFrame:self.view.frame];

[self.view addSubview:webView];

2.加載數據[三種]

第一種:

- (void)loadRequest:(NSURLRequest *)request;

[webView loadRequest:[NSURLRequest requestWithURL:[NSUR URLWithString:@"http://www.baidu.com"]]];

這是加載網頁最常用的方式,通過一個網頁的url來進行加載,這個url可以是遠程的,也可以是本地的。

第二種:

- (void)loadHTMLString:(NSString *)string baseURL:(nullable NSURL *)baseURL;

第一個參數是讀取html文件得到的字符串,第二個參數是獲取html文件中引用圖片等資源的路徑

第三種:

- (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)textEncodingName baseURL:(NSURL *)baseURL;

用的比較少,但是自由度最高。參數依次是:文件數據、文件類型、編碼類型、資源路徑(同第二種)。

3.協議方法[UIWebViewDelegate

//準備加載時調用(通過返回值判斷是否調用)

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

//開始加載時調用

- (void)webViewDidStartLoad:(UIWebView *)webView;

//結束加載時調用

- (void)webViewDidFinishLoad:(UIWebView *)webView;

//加載失敗時調用

- (void)webView:(UIWebView *)webView didFailLoadWithError:(nullable NSError *)error;


4.屬性

@property (nullable, nonatomic, assign) id <UIWebViewDelegate> delegate;//代理

@property (nonatomic, readonly, strong) UIScrollView *scrollView NS_AVAILABLE_IOS(5_0);//內置的scrollView

@property (nullable, nonatomic, readonly, strong) NSURLRequest *request;//URL請求

@property (nonatomic, readonly, getter=canGoBack) BOOL canGoBack;//能否返回上一級

@property (nonatomic, readonly, getter=canGoForward) BOOL canGoForward;//能否進入下一級

@property (nonatomic, readonly, getter=isLoading) BOOL loading;//是否正在加載

@property (nonatomic) BOOL scalesPageToFit;//是否適應屏幕大小

@property (nonatomic) UIDataDetectorTypes dataDetectorTypes NS_AVAILABLE_IOS(3_0);//轉鏈接,比較重要

@property (nonatomic) BOOL allowsInlineMediaPlayback NS_AVAILABLE_IOS(4_0);//是否使用內聯播放器播放視頻

@property (nonatomic) BOOL mediaPlaybackRequiresUserAction NS_AVAILABLE_IOS(4_0);//是否自動播放

@property (nonatomic) BOOL mediaPlaybackAllowsAirPlay NS_AVAILABLE_IOS(5_0);//是否支持air play

@property (nonatomic) BOOL suppressesIncrementalRendering NS_AVAILABLE_IOS(6_0);//是否加載數據後渲染界面

@property (nonatomic) BOOL keyboardDisplayRequiresUserAction NS_AVAILABLE_IOS(6_0);//直接翻譯

@property (nonatomic) UIWebPaginationMode paginationMode NS_AVAILABLE_IOS(7_0);//網頁翻頁模式

@property (nonatomic) UIWebPaginationBreakingMode paginationBreakingMode NS_AVAILABLE_IOS(7_0);//

@property (nonatomic) CGFloat pageLength NS_AVAILABLE_IOS(7_0);//頁面長度

@property (nonatomic) CGFloat gapBetweenPages NS_AVAILABLE_IOS(7_0);//間距

@property (nonatomic, readonly) NSUInteger pageCount NS_AVAILABLE_IOS(7_0);//頁數

//下面這兩好像與分屏有關,有朋友瞭解的給我留個言,感激不盡

@property (nonatomic) BOOL allowsPictureInPictureMediaPlayback NS_AVAILABLE_IOS(9_0);

@property (nonatomic) BOOL allowsLinkPreview NS_AVAILABLE_IOS(9_0);


發佈了34 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章