1.繼承鏈:UIview:UIResponder:NSObjecthtml
2.使用loadHTMLString:baseURL:方法來加載本地的HTML文件,或者使用
webloadRequest:方法來加載網絡內容,使用stopLoading方法來中止加載網絡內容
loading屬性可以發現是否正在加載網絡內容網絡
3.使用goBack
and goForward方法在按鈕上執行回放或者前放網頁,使用
appcanGoBack
and canGoForward方法決定用戶是否能夠使用回放或者前放的功能
4.支持的文件格式:除了支持了HTML的文件,也支持Keynote、PDF和page文件,爲了可以更加直觀的使用app,最好就使用UItextview控件性能
5.設置委託學習
(1)@property(nonatomic, assign) id< UIWebViewDelegate > delegate :設置委託,遵照UIWebViewDelegate協議ui
6.加載內容atom
(1)- (void)loadData:(NSData *)data
MIMEType:(NSString *)MIMEType
textEncodingName:(NSString *)encodingName
baseURL:(NSURL *)baseURL
lua
data |
The content for the main page.spa |
MIMEType |
The MIME type of the content. |
encodingName |
The IANA encoding name as in |
baseURL |
The base URL for the content. |
解釋:爲應用插入指定路徑的網絡內容,UIWebView加載資源第三種方式 將本地數據轉化爲NSData嵌入到webView
(2)- (void)loadHTMLString:(NSString *)string
baseURL:(NSURL *)baseURL
string |
The content for the main page. |
baseURL |
The base URL for the content. |
解釋:爲應用嵌入web信息,用來加載本地的內容
(3)- (void)loadRequest:(NSURLRequest *)request :用來加載網頁指定路徑的內容,記得這個不能夠加載本地的數據
(4)@property(nonatomic, readonly, strong) NSURLRequest *request :返回加載內容的路徑,只讀
(5)@property(nonatomic, readonly, getter=isLoading) BOOL loading :確認接收者是否正在加載,只讀
(6)- (void)stopLoading :中止加載
(7)- (void)reload :從新加載當前內容
7.前放和後退
(1)@property(nonatomic, readonly, getter=canGoBack) BOOL canGoBack :這個值指定用戶是否可以後退,只讀
(2)@property(nonatomic, readonly, getter=canGoForward) BOOL canGoForward :這個值指定用戶是否可以前放,只讀
(3)- (void)goBack :進行後退操做
(4)- (void)goForward :進行前放操做
8.設置web內容的屬性
(1)@property(nonatomic) BOOL allowsLinkPreview :是否可以對指定鏈接的內容進行預覽
(2)@property(nonatomic) BOOL scalesPageToFit :是否可以讓webpage鋪滿視圖,是否可以讓用戶進行改變比例
(3)@property(nonatomic, readonly, strong) UIScrollView *scrollView :獲取和web view鏈接的滾動視圖
(4)@property(nonatomic) BOOL suppressesIncrementalRendering :布爾會值決定是否要在全部內容加載到內存中的時候才能夠進行渲染
(5)@property(nonatomic) BOOL keyboardDisplayRequiresUserAction :指定鍵盤是否可以根據用戶的須要在web view中彈出
(6)@property(nonatomic) UIDataDetectorTypes dataDetectorTypes :獲取或者設置數據的類型
9.運行JavaScript
(1)- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script
:返回JavaScript的腳本
10.管理媒體的回放
(1)@property(nonatomic) BOOL allowsInlineMediaPlayback :是否容許HTML5的視頻play inline或者是否可以滿屏播放
(2)@property(nonatomic) BOOL mediaPlaybackRequiresUserAction :決定是讓視頻自動播放仍是讓用戶手動播放
(3)@property(nonatomic) BOOL mediaPlaybackAllowsAirPlay :是否容許共享播放視頻
(4)@property(nonatomic) BOOL allowsPictureInPictureMediaPlayback :是否容許畫中畫可以進行回放
11.管理頁面
(1)@property(nonatomic) CGFloat gapBetweenPages :獲取設置兩個pages之間的相隔的距離和位置
(2)@property(nonatomic, readonly) NSUInteger pageCount :返回頁的數量,只讀
(3)@property(nonatomic) CGFloat pageLength :獲取每一個page的長度
(4)@property(nonatomic) UIWebPaginationBreakingMode paginationBreakingMode :這個屬性決定了CSS屬性是採用column-break 仍是page-breaking樣式
(5)@property(nonatomic) UIWebPaginationMode paginationMode :設置是否使用分頁的形式來展現web內容
12.數據類型
(1)UIWebViewNavigationType的類型
UIWebViewNavigationTypeLinkClicked, //用戶觸發了一個連接
UIWebViewNavigationTypeFormSubmitted, //用戶提交了一個表單
UIWebViewNavigationTypeBackForward, //用戶觸擊前進前進或返回按鈕
UIWebViewNavigationTypeReload, //用戶觸擊從新加載的按鈕
UIWebViewNavigationTypeFormResubmitted, //用戶重複提交表單
UIWebViewNavigationTypeOther //發生了其餘行爲
(2)UIWebPaginationBreakingMode的類型
UIWebPaginationBreakingModePage, //默認設置是這個屬性,CSS屬性以頁樣式。
UIWebPaginationBreakingModeColumn //當UIWebPaginationBreakingMode設置這個屬性的時候,這個頁面內容CSS屬性以column-break 代替page-breaking樣式。
後面的這些事別人寫的:
UIWebView所有API學習。
最生僻的API作了下劃線以及粗體的標註。百度上查了全是拷貝的同一份代碼,並且只有代碼沒有解釋,非常鄙視。
//1. UIWebViewNavigationType枚舉定義了頁面中用戶行爲的分類
typedef NS_ENUM(NSInteger, UIWebViewNavigationType) {
UIWebViewNavigationTypeLinkClicked,//用戶觸發了一個連接
UIWebViewNavigationTypeFormSubmitted,//用戶提交了一個表單
UIWebViewNavigationTypeBackForward,//用戶觸擊前進前進或返回按鈕
UIWebViewNavigationTypeReload,//用戶觸擊從新加載的按鈕
UIWebViewNavigationTypeFormResubmitted,//用戶重複提交表單
UIWebViewNavigationTypeOther//發生了其餘行爲
};
//2. 加載內容關於分頁顯示幾種不一樣類型
typedef NS_ENUM(NSInteger, UIWebPaginationMode) {
UIWebPaginationModeUnpaginated,
UIWebPaginationModeLeftToRight,
UIWebPaginationModeTopToBottom,
UIWebPaginationModeBottomToTop,
UIWebPaginationModeRightToLeft
};
//3.這個枚舉決定了webView加載頁面具備CSS屬性時是使用頁的樣式仍是以列的樣式。
typedef NS_ENUM(NSInteger, UIWebPaginationBreakingMode) {
UIWebPaginationBreakingModePage,//默認設置是這個屬性,CSS屬性以頁樣式。
UIWebPaginationBreakingModeColumn//當UIWebPaginationBreakingMode設置這個屬性的時候,這個頁面內容CSS屬性以column-break 代替page-breaking樣式。
};
@class UIWebViewInternal;
@protocol UIWebViewDelegate;
NS_CLASS_AVAILABLE_IOS(2_0) @interface UIWebView : UIView<NSCoding, UIScrollViewDelegate> {
@private
UIWebViewInternal *_internal;
}
//4.實現WebView代理方法
@property (nonatomic, assign) id <UIWebViewDelegate> delegate;
//5.WebView的scrollView屬性
@property (nonatomic, readonly, retain) UIScrollView*scrollView NS_AVAILABLE_IOS(5_0);
//6.UIWebView加載資源最經常使用的一種方式,直接給出URL進行加載
- (void)loadRequest:(NSURLRequest *)request;
//7.UIWebView加載資源第二種方式,將本地html文件內容嵌入到WebView
- (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL;
// 8. UIWebView加載資源第三種方式 將本地數據轉化爲NSData嵌入到webView
- (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)textEncodingName baseURL:(NSURL *)baseURL;
//9.URL請求
@property (nonatomic, readonly, retain) NSURLRequest*request;
//10.webView加載刷新
- (void)reload;
//11. webView中止加載
- (void)stopLoading;
//12.當webView跳轉了一個網頁時,執行goBack能夠回退到以前的界面。
- (void)goBack;
//13..執行goForward前進一個以前跳過的界面
- (void)goForward;
//14.只讀型bool值,用來判斷當前頁面是否能夠回退
@property (nonatomic, readonly, getter=canGoBack) BOOLcanGoBack;
//15.只讀型bool值,用來判斷當前頁面是否能夠前進
@property (nonatomic, readonly, getter=canGoForward) BOOLcanGoForward;
//16.只讀型bool值,用來判斷當前頁面是否能夠加載刷新
@property (nonatomic, readonly, getter=isLoading) BOOLloading;
//17.這個方法須要等到webView加載完畢以後纔會調用,經過它咱們能夠很方便的操做UIWebView中的頁面元素。參數script用來傳進當前頁面文件元素字符串,對傳進來的字符串進行相應的操做,例如[webview stringByRvaluaingJavaScriptFromString:@「document.title」],能夠獲得頁面的title
- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;
//18.是否讓內容伸縮至適應屏幕當前尺寸
@property (nonatomic) BOOL scalesPageToFit;
//19.這個屬性若是設置爲YES,當進入到頁面視圖能夠自動檢測電話號碼,讓用戶能夠單機號碼進行撥打,不過現已棄用。
@property (nonatomic) BOOL detectsPhoneNumbers NS_DEPRECATED_IOS(2_0, 3_0);
//20.這個屬性能夠設定使電話號碼,網址,電子郵件和符合格式的日期等文字變爲鏈接文字。
@property (nonatomic) UIDataDetectorTypes dataDetectorTypes NS_AVAILABLE_IOS(3_0);
//21.這個屬性決定了頁面用內嵌HTML5播放視頻仍是用本地的全屏控制。爲了內嵌視頻播放,不單單須要在這個頁面上設置這個屬性,還須要在HTML的viedeo元素必須包含webkit-playsinline屬性。默認iPhone爲NO,iPad爲YES。
@property (nonatomic) BOOL allowsInlineMediaPlaybackNS_AVAILABLE_IOS(4_0); // iPhone Safari defaults to NO. iPad Safari defaults to YES
//22.這個屬性決定了HTML5視頻能夠自動播放仍是須要用戶啓動播放。iPhone和iPad默認都是YES。
@property (nonatomic) BOOL mediaPlaybackRequiresUserActionNS_AVAILABLE_IOS(4_0); // iPhone and iPad Safari both default to YES
//23.這個屬性決定了從這個頁面是否能夠Air Play。iPhone和iPad上都是默認YES。
@property (nonatomic) BOOL mediaPlaybackAllowsAirPlayNS_AVAILABLE_IOS(5_0); // iPhone and iPad Safari both default to YES
//24.這個值決定了網頁內容的渲染是否在把內容所有假愛到內存中再去處理。若是設置爲YES,只有網頁內容加載到內存裏了纔會去渲染。默認爲NO。
@property (nonatomic) BOOL suppressesIncrementalRenderingNS_AVAILABLE_IOS(6_0); // iPhone and iPad Safari both default to NO
//25.這個屬性若是設置爲YES,用戶必須明確的點擊頁面上的元素或者相關聯的輸入頁面來顯示鍵盤,。若是設置爲NO,一個元素的焦點事件就會致使輸入視圖的顯示和自動關聯這個元素。
@property (nonatomic) BOOL keyboardDisplayRequiresUserAction NS_AVAILABLE_IOS(6_0); // default is YES
//26.iOS7以後的新API,設置頁面分頁模型選擇。
@property (nonatomic) UIWebPaginationMode paginationMode NS_AVAILABLE_IOS(7_0);
//27.這個屬性決定了CSS屬性是採用column-break 仍是page-breaking樣式。
@property (nonatomic) UIWebPaginationBreakingMode paginationBreakingMode NS_AVAILABLE_IOS(7_0);
//28.分頁的長度
@property (nonatomic) CGFloat pageLength NS_AVAILABLE_IOS(7_0);
//29.多個頁面之間差距值
@property (nonatomic) CGFloat gapBetweenPages NS_AVAILABLE_IOS(7_0);
//30.分頁的個數。
@property (nonatomic, readonly) NSUInteger pageCountNS_AVAILABLE_IOS(7_0);
@end
@protocol UIWebViewDelegate <NSObject>
@optional
//31.UIWebView的代理方法,當webview開始加載請求的時候回去調用,能夠攔截一些用戶的行爲是否加載。返回YES表明容許加載,返回NO表明中止加載。
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
//32.webView加載開始的時候調用。
- (void)webViewDidStartLoad:(UIWebView *)webView;
//33.webView加載完畢的時候調用。
- (void)webViewDidFinishLoad:(UIWebView *)webView;
//34.webView加載失敗的時候調用
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;
@end