先来看看UIWebViewDelegate:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
该方法返回值表示是否允许加载目标链接的页面内容,YES表示允许,NO表示不允许;
UIWebViewNavigationType枚举类型(表示界面中用户行为类型):
UIWebViewNavigationTypeLinkClicked, 用户点击了链接
UIWebViewNavigationTypeFormSubmitted, 用户提交了表单
UIWebViewNavigationTypeBackForward, 用户点击了前进或者返回按钮
UIWebViewNavigationTypeReload, 用户点击了重新加载按钮
UIWebViewNavigationTypeFormResubmitted, 用户重新提交了表单
UIWebViewNavigationTypeOther 其他行为
- (void)webViewDidStartLoad:(UIWebView *)webView;
网页开始加载的时候被调用
- (void)webViewDidFinishLoad:(UIWebView *)webView;
网页加载完毕的时候被调用
- (void)webView:(UIWebView *)webView didFailLoadWithError:(nullableNSError *)error;
网页加载出错的时候被调用
不要忘记设置webview的代理
一些常用的属性介绍:
paginationMode(iOS7以后):当加载的网页大小大于view时,网页会以翻页的效果展示
UIWebPaginationModeUnpaginated, 不使用翻页效果
UIWebPaginationModeLeftToRight, 从左向右翻页
UIWebPaginationModeTopToBottom, 从上向下翻页
UIWebPaginationModeBottomToTop, 从下向上翻页
UIWebPaginationModeRightToLeft 从右向左翻页
paginationBreakingMode(iOS7以后):加载页面具有CSS属性时是使用页的样式还是以列的样式
UIWebPaginationBreakingModePage, //页模式
UIWebPaginationBreakingModeColumn //列模式
@property (nonatomic) BOOL scalesPageToFit;
缩放HTML页面来适配其视图大小,从而达到整屏显示内容的效果,并且用户可以用捏合动作来放大或缩小页面来查看内容
@property (nonatomic) BOOL detectsPhoneNumbers NS_DEPRECATED_IOS(2_0, 3_0);
自动检测网页上的电话号码,点击可以拨打(被禁用了,以下面的属性替代)
@property (nonatomic) UIDataDetectorTypes dataDetectorTypes NS_AVAILABLE_IOS(3_0);
检测网页上的各种数据类型,执行相应的操作(UIDataDetectorTypes包含了所有的类型,可以根据需要使用)
@property (nonatomic) BOOL allowsInlineMediaPlayback NS_AVAILABLE_IOS(4_0);
用内嵌HTML5播放视频还是用本地的全屏控制
@property (nonatomic) BOOL mediaPlaybackRequiresUserAction NS_AVAILABLE_IOS(4_0);
内嵌HTML5播放视频是自动播放还是用户启动
@property (nonatomic) BOOL mediaPlaybackAllowsAirPlay NS_AVAILABLE_IOS(5_0);
是否可以Air Play
@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);
画中画(Picture inPicture)功能:让用户在多个应用中可以悬浮播放视频,并可移动视频窗口以及调整窗口大小
@property (nonatomic) BOOL allowsLinkPreview NS_AVAILABLE_IOS(9_0);
在3D Touch中 开启peek和pop
webview加载网页的三种方式
- (void)loadRequest:(NSURLRequest *)request; 直接加载url
- (void)loadHTMLString:(NSString *)string baseURL:(nullableNSURL *)baseURL; 加载本地html文件内容
- (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)textEncodingName baseURL:(NSURL *)baseURL; 将本地数据转化为NSData加载到webView
- (void)reload; 重新加载
- (void)stopLoading; 停止加载 相关的属性 : loading
- (void)goBack; 返回 相关的属性 : canGoBack
- (void)goForward; 前进 相关的属性 : canGoForward
- (nullable NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;用于操作UIWebview中的元素
例如:
//获得UIWebView的URL地址
//获得UIWebView的titile
NSString *currentTitle = [webView stringByEvaluatingJavaSc