菜单

iOS的QuickTime Plugin,iosquicktime

2019年8月10日 - LINUX

iOS的QuickTime Plugin,iosquicktime

当UIWebView播放录制时,可以看看view
hierarchy里有FigPluginView的身影。这几个类来自于QuickTime
Plugin,plugin的不二秘诀为:
/Applications/Xcode.app/Contents/Developer/Platforms/BlackBerrySimulator.platform/Developer/SDKs/OPPOSimulator6.1.sdk/System/Library/Internet Plug-Ins/QuickTime Plugin.webplugin
那是个公文夹,里面还会有链接库以及文件和图表能源。 QuickTime
Plugin这些名字起得很响亮,其实代码并相当的少,Objective-C类独有9个,也就只是FigPluginView为主了。与WebKit.framework有耦合,可能说正是为着封装录像播放控件来给WebKit.framework用的。类关系如下图:

图片 1

UIWebDocumentView会以分子变量struct __CFDictionary
*_plugInViews来配对FigPluginView和UIWebPlugInView,其中FigPluginView为key,UIWebPlugInView为value。
UIWebPlugInView有成员变量UIView *_uiView指向FigPluginView,
FigPluginView有成员变量WAKView *_wakView指向UIWebPlugInView。

本来,录制只是PluginView的一种,UIWebPlugInView还有大概会管理其他连串的plugin。

渲染流程中会有这么的关系:

图片 2

RenderLayerBacking在更新layer树时,从RenderWidget出发通过几层关系获取UIWebPlugInView,调用其函数attachPluginLayer把FigPluginView增加到UIWebDocumentView中。注意这几个“加多”是通过广大层CALayer直接达成的,UIWebPlugInView还大概会创立贰个hostLayer作为MediaLayer。调用链的末尾达成代码如下:

- (void)_connectPluginLayers  
{  
    WebThreadLock();  
    if (!_hostingLayer)  
    {  
        _hostingLayer = [[CALayer alloc] init];  
    }  
    [_webView.layer insertSublayer:_hostingLayer atIndex:0];  
    if ([[_webView webView] _setMediaLayer:_hostingLayer forPluginView:self])  
    {  
        self.parentedInLayer = YES;  
        [_uiView retain];  
        [_hostingLayer addSublayer:_uiView.layer];  
        [_uiView release];  
        [_webView _setSubviewCachesNeedUpdate:YES];  
        [self _reshapeOnMainThread];  
    }  
}  /* 何问起 hovertree.com */

这里只列个大要了,类间网状重视,好难画图和用文字表明。总而言之能够更明确,WAKView就是代表了NSView,以求和Mac的WebView共用代码,但iOS
application是单进度程序,只可以用CALayer树来取代NSView树做结合了。

推荐:http://www.cnblogs.com/roucheng/p/3528371.html

http://www.bkjia.com/IOSjc/1130096.htmlwww.bkjia.comtruehttp://www.bkjia.com/IOSjc/1130096.htmlTechArticleiOS的QuickTime Plugin,iosquicktime
当UIWebView播放摄像时,能够见见view
hierarchy里有FigPluginView的人影。这几个类来自于QuickTime
Plugin,plugin的门径为:…

当UIWebView播放摄像时,能够看来view
hierarchy里有FigPluginView的身材。那个类来自于QuickTime
Plugin,plugin的不二诀窍为:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.1.sdk/System/Library/Internet Plug-Ins/QuickTime Plugin.webplugin
那是个文本夹,里面还或然有链接库以及文件和图表财富。

QuickTime
Plugin那些名字起得极高昂,其实代码并相当少,Objective-C类独有9个,也就只是FigPluginView为主了。与Web基特.framework有耦合,恐怕说便是为了封装录像播放控件来给WebKit.framework用的。类关系如下图:

图片 3

UIWebDocumentView会以分子变量struct __CFDictionary
*_plugInViews来配对FigPluginView和UIWebPlugInView,其中FigPluginView为key,UIWebPlugInView为value。
UIWebPlugInView有成员变量UIView *_uiView指向FigPluginView,
FigPluginView有成员变量WAKView *_wakView指向UIWebPlugInView。

理当如此,摄像只是PluginView的一种,UIWebPlugInView还有恐怕会处理别的连串的plugin。

渲染流程中会有那般的涉嫌:

图片 4

RenderLayerBacking在更新layer树时,从RenderWidget出发通过几层关系猎取UIWebPlugInView,调用其函数attachPluginLayer把FigPluginView增添到UIWebDocumentView中。注意那个“加多”是透过广大层CALayer间接完结的,UIWebPlugInView还大概会创建多少个hostLayer作为MediaLayer。调用链的背后落成代码如下:

- (void)_connectPluginLayers  
{  
    WebThreadLock();  
    if (!_hostingLayer)  
    {  
        _hostingLayer = [[CALayer alloc] init];  
    }  
    [_webView.layer insertSublayer:_hostingLayer atIndex:0];  
    if ([[_webView webView] _setMediaLayer:_hostingLayer forPluginView:self])  
    {  
        self.parentedInLayer = YES;  
        [_uiView retain];  
        [_hostingLayer addSublayer:_uiView.layer];  
        [_uiView release];  
        [_webView _setSubviewCachesNeedUpdate:YES];  
        [self _reshapeOnMainThread];  
    }  
}  /* 何问起 hovertree.com */

此间只列个轮廓了,类间网状重视,好难画图和用文字表达。由此可见能够更显著,WAKView正是顶替了NSView,以求和Mac的WebView共用代码,但iOS
application是单进度程序,只可以用CALayer树来取代NSView树做结合了。

推荐:http://www.cnblogs.com/roucheng/p/3528371.html

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图