UIWebView体系结构(七)WebView

在《iOS WebCore的wak目录》中证实了iOS的WebKit是想尽可能复用Mac上的代码,所以WebView在iOS和Mac上差不多。

Mac WebView的参考文档:

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/WebKit/Classes/WebView_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40003822

当然,官方文档不会描述WebView在iOS上的作用,因为用class-dump导出头文件的关系,所以有些成为了私有API的函数还是值得说说,例如设置UA。

+ (BOOL)canShowMIMEType:(NSString *)MIMEType

能否显示某种MIMEType的数据。iOS可以做截获判断。

+ (void)_setTileCacheLayerPoolCapacity:(unsigned int)arg1;

设置块区绘制的layer缓存数量。关于TileCache暂可参考《UIWebView结构体系(二)UIWebTiledView和WAKWindow》,把这个数值设大可在一定程度加速页面渲染,但也会因此占用更多内存。

+ (void)_setHTTPPipeliningEnabled:(BOOL)arg1;

开关 HTTP管线化

+ (void)_removeUserStyleSheetsFromGroup:(id)arg1 world:(id)arg2;
+ (void)_removeUserScriptsFromGroup:(id)arg1 world:(id)arg2;
+ (void)_removeUserStyleSheetFromGroup:(id)arg1 world:(id)arg2 url:(id)arg3;
+ (void)_removeUserScriptFromGroup:(id)arg1 world:(id)arg2 url:(id)arg3;
+ (void)_addUserStyleSheetToGroup:(id)arg1 world:(id)arg2 source:(id)arg3 url:(id)arg4 whitelist:(id)arg5 blacklist:(id)arg6 injectedFrames:(int)arg7;
+ (void)_addUserStyleSheetToGroup:(id)arg1 world:(id)arg2 source:(id)arg3 url:(id)arg4 whitelist:(id)arg5 blacklist:(id)arg6;
+ (void)_addUserScriptToGroup:(id)arg1 world:(id)arg2 source:(id)arg3 url:(id)arg4 whitelist:(id)arg5 blacklist:(id)arg6 injectionTime:(int)arg7 injectedFrames:(int)arg8;
+ (void)_addUserScriptToGroup:(id)arg1 world:(id)arg2 source:(id)arg3 url:(id)arg4 whitelist:(id)arg5 blacklist:(id)arg6 injectionTime:(int)arg7;

没用过,从名字看是为特定的资源添加StyleSheet和Script

+ (void)_setMaximumImageSizeBeforeSubsampling:(unsigned int)arg1;

设置图片资源预取样的最大size

+ (BOOL)_canHandleRequest:(NSURLRequest*)arg1;
+ (BOOL)_canHandleRequest:(NSURLRequest*)arg1 forMainFrame:(BOOL)arg2;

能否处理这个Request

+ (void)_disableRemoteInspector;
+ (void)_enableRemoteInspector;

开关远程调试功能

+ (BOOL)_allowCookies;
+ (void)_setAllowCookies:(BOOL)arg1;
- (void)_setCookieEnabled:(BOOL)arg1;
- (BOOL)_cookieEnabled;

是否启用Cookies

+ (BOOL)_acceleratedImageDecoding;
+ (void)_setAcceleratedImageDecoding:(BOOL)arg1;

开关加速图片解码

+ (void)_setCacheModel:(unsigned int)arg1;

设置Cache

+ (void)_setPDFViewClass:(Class)arg1;
+ (Class)_getPDFViewClass;
+ (void)_setPDFRepresentationClass:(Class)arg1;
+ (Class)_getPDFRepresentationClass;

设置显示PDF的类

- (double)estimatedProgress;

获取估算的加载进度

- (id)elementAtPoint:(struct CGPoint)arg1;
- (id)_elementAtWindowPoint:(struct CGPoint)arg1;

获取在指定坐标的元素

- (id)customUserAgent;
- (void)setCustomUserAgent:(id)arg1;

设置自定义的UA

- (void)_setWebGLEnabled:(BOOL)arg1;
- (BOOL)_webGLEnabled;

开关WebGL功能

- (void)setUsesPageCache:(BOOL)arg1;
- (BOOL)usesPageCache;

开关缓存Page

- (id)_touchEventRegions;

获取在监听touch事件的区域

- (id)_formDelegateForSelector:(SEL)arg1;
- (id)_formDelegateForwarder;
- (id)_formDelegate;
- (void)_setFormDelegate:(id)arg1;

表单处理的委托。可实现自动填充功能

上一篇:UIWebView体系结构(六)UIWebView

下一篇:UIWebView体系结构(八)各个Client综述

时间: 2024-10-23 12:40:58

UIWebView体系结构(七)WebView的相关文章

UIWebView体系结构(六)UIWebView

UIWebView的实际成员变量都由UIWebViewInternal保存,UIWebViewInternal的声明如下: @interface UIWebViewInternal : NSObject { UIScrollView *scroller; UIWebBrowserView *browserView; UICheckeredPatternView *checkeredPatternView; id <UIWebViewDelegate> delegate; unsigned in

UIWebView体系结构(三)UIWebDocumentView和WebView

WebView是UIWebDocumentView最重要的组合对象,先讲WebView吧. WebView的声明如下:(代码好长,点此跳过) @interface WebView : WAKView { WebViewPrivate *_private; } + (void)registerViewClass:(Class)arg1 representationClass:(Class)arg2 forMIMEType:(id)arg3; + (void)registerURLSchemeAsL

UIWebView体系结构(四)UIWebBrowserView

UIWebBrowserView的声明如下:(代码好长,点此跳过) @interface UIWebBrowserView : UIWebDocumentView <UIWebFormAccessoryDelegate, UIBrowserDocumentController, _UIWebRotationDelegate> { UIWebFormAccessory *_accessory; NSObject<UIFormPeripheral> *_input; DOMNode *

UIWebView体系结构(一)概貌

UIWebView属于UIKit,封装了WebKit.framework的WebView: WebView组合管理了WebCore.framework的Page,并提供了各种Clients: Page管理了Main Frame,Main Frame管理了sub Frame(FrameTree). UIWebView层(点击图片查看全图): WebView层(点击图片查看全图): Page层(未标明的关系为组合): Frame层(未标明的关系为组合): 转载请注明出处:http://blog.cs

UIWebView体系结构(五)_UIWebViewScrollView和UIWebScrollView

_UIWebViewScrollView的继承链为:_UIWebViewScrollView->UIWebScrollView->UIScrollView. 通过反编译可以得到实现._UIWebViewScrollView和UIWebScrollView的实现为:(代码好长,点此跳过) @interface UIWebScrollView : UIScrollView - (void)didMoveToWindow; - (BOOL)touchesShouldCancelInContentVi

IOS中UIWebView加载Loading的实现方法

  最近有朋友问我类似微信语音播放的喇叭动画和界面图片加载loading界面是怎样实现的,是不是就是一个gif图片呢!我的回答当然是否定了,当然不排除也有人用gif图片啊! 第一种方法:使用UIView and UIActivityIndicatorView 代码如下: //创建UIWebView WebView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 44, 320, 400)]; [WebView setUserInteraction

UIWebView顶部添加自定义视图

今天碰到一个需求,需要往UIWebView顶部添加一个视图.在这里我找到了一个解决方案,目前可以满足我的需求.如果哪位朋友有更好,更优的解决方案,还请不吝赐教. 核心代码如下: private func addHeaderView(headerView: UIView) { let browserCanvas = webView!.bounds for subView in webView!.scrollView.subviews { var subViewRect = subView.fram

iOS开发中使用UIWebView 屏蔽 alert警告框_IOS

 如果是网页内容里面的alert,我们可以等网页加载完毕,也就是在webViewDidFinishLoad中执行下面的js代码,就可以屏蔽alert了 [myWebView stringByEvaluatingJavaScriptFromString:@"window.alert=null;"]; 但上面的方法对于网页onLoad事件里面的alert就不起作用了 解决方法就是给UIWebView添加一个类别: 给工程添加JavaScriptAlert.h @interface UIWe

Objective-C头文件导出工具class-dump

首先,这个工具是开源的.作者网站:http://stevenygard.com/projects/class-dump/ 用途: 分析库文件或可执行文件,得到Objective-C类和部分C结构体的信息.常见使用场景是得到系统SDK的私有API.头文件的例子请参考<UIWebView体系结构(六)UIWebView> 原理: Objective-C类的信息会有字符串来对应描述,分析保存这些信息的区域,梳理成Objective-C头文件输出.请参见<IDA反汇编/反编译静态分析iOS模拟器