前言
要想成功,先练内功
UIWebViewDelegate
// 在webview开始加载框架之前发送,返回 YES 表示继续往下加载,NO 则表示不继续往下加载
- (BOOL)webView:(UIWebView *)webView
shouldStartLoadWithRequest:(NSURLRequest *)request
navigationType:(UIWebViewNavigationType)navigationType;
// 在 WebView 开始加载框架后发送
- (void)webViewDidStartLoad:(UIWebView *)webView;
// 在 webview 加载完框架之后发送
- (void)webViewDidFinishLoad:(UIWebView *)webView;
// webView 加载失败之后发送
- (void)webView:(UIWebView *)webView
didFailLoadWithError:(NSError *)error;
UIWebView
// 加载一个URL请求通过异步的方式,不要使用这个方法去加载本地的 HTML Files。如果要停止加载请使用stopLoading这个方法,查看请求是否在加载中,请使用属性 loading
- (void)loadRequest:(NSURLRequest *)request;
// 通过这个方法加载本地的 URL,可以帮助你避免受到安全攻击
- (void)loadHTMLString:(NSString *)string
baseURL:(nullable NSURL *)baseURL;
// 设置主页内容,MIME 类型,内容编码和基本 URL
- (void)loadData:(NSData *)data
MIMEType:(NSString *)MIMEType
textEncodingName:(NSString *)textEncodingName
baseURL:(NSURL *)baseURL
// 重新加载当前页面
- (void)reload;
// 停止加载任何内容
- (void)stopLoading;
// 回退
- (void)goBack;
// 前进
- (void)goForward;
// 是否能回退
@property (nonatomic, readonly, getter=canGoBack) BOOL canGoBack;
// 是否能前进
@property (nonatomic, readonly, getter=canGoForward) BOOL canGoForward;
// 是否在加载状态
@property (nonatomic, readonly, getter=isLoading) BOOL loading;
// 返回运行 JavaScript 脚本 结果,这个方法是同步的会等到结果执
行完成。执行成功返回执行结果,执行失败则返回nil。
- (nullable NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;
是否可以自适应网页,放大缩小,允许用户可以修改
@property (nonatomic) BOOL scalesPageToFit;
WebView 一些其他属性设置
// 在具体电话功能设备上的默认值为 YES,如果开启会自动识别数字为电话号码
@property (nonatomic) BOOL detectsPhoneNumbers NS_DEPRECATED_IOS(2_0, 3_0);
// 在 web 视图中可以转换,可以点击网址的视图类型
@property (nonatomic) UIDataDetectorTypes dataDetectorTypes NS_AVAILABLE_IOS(3_0);
// 允许内联 H5 播放器
@property (nonatomic) BOOL allowsInlineMediaPlayback NS_AVAILABLE_IOS(4_0); // iPhone Safari defaults to NO. iPad Safari defaults to YES
// 是否自动播放视频 NO,允许并且确认 <audio> or <video> 要有设置对自动播放
@property (nonatomic) BOOL mediaPlaybackRequiresUserAction NS_AVAILABLE_IOS(4_0); // iPhone and iPad Safari both default to YES
// 允许AirPlay
@property (nonatomic) BOOL mediaPlaybackAllowsAirPlay NS_AVAILABLE_IOS(5_0); // iPhone and iPad Safari both default to YES
// 如果是YES 这个值决定是否把内容全部加载的内存中采取渲染,默认是 NO
@property (nonatomic) BOOL suppressesIncrementalRendering NS_AVAILABLE_IOS(6_0); // iPhone and iPad Safari both default to NO
// 如果设置为 YES,用户必须明确点击页面上的元素或者相关联的的输入页面来显示键盘
@property (nonatomic) BOOL keyboardDisplayRequiresUserAction NS_AVAILABLE_IOS(6_0); // default is YES
@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);
// 是否允许使用 3D Touch 来展示链接,默认为 NO
@property (nonatomic) BOOL allowsLinkPreview NS_AVAILABLE_IOS(9_0); // default is NO