webView 添加头部与底部视图

webView 添加头部与底部视图,第1张

有时我们用 webView 展示 html 是需要自定义头部视图与底部视图,原生没有像 tableView 那样提供相应的方法。我们只能自己写了。

设置 contentInset,而不是 contentSize。

配置区头:

设置 contentSize 的时机是在 - (void)webViewDidFinishLoad:(UIWebView *)webView 网页加载完成之后,此时 html 网页是和头部视图重叠在一起,需要 1s 左右时间更新视图,体验不好。而使用 contentInset 不会发生这种现象。

在 webView 加载完成后,获取 UIWebBrowserView 的 size 并重新设置 webView 的 contentSize。

UIWebBrowserView 是负责展示 html 内容的。

1 概述

HTML5 SDK 可以按照“独立应用”、“Widget”和“WebView”三种方式进行集成,三种集成方式各有优点。

独立应用集成方式:使用独立应用方式,开发者需要将HTML5 SDK生成的首页面设置为当前View的subView。HTML5 SDK将对应用进行管理。

Widget集成方式:运行方式和独立运行方式类似,开发者在集成时可在需要的位置启动HTML5 SDK,显示指定的HTML5 应用。

Webview集成方式:用户可在任何页面将HTML5 SDK的页面以Webview的形式独立显示,显示的Webview页面。

2 导入SDK Lib文件和头文件

在工程中引入HTML5+ SDK扩展功能的.a文件,开发者可以根据需求添加不同的扩展插件。必须要引入的是liblibPDRCore.a,liblibPDRCore.a库是HTML5+SDK运行的基础库文件。

在引入lib文件时需要将Debug-iphoneos、Release-iphoneos和Release-iphonesimulator引入,分别为真机调试,真机编译和模拟器调试使用。

工程中引入HTML5 SDK 中提供的头文件。

3 添加代码编译测试

独立应用集成的方式比较简单,请安如下步骤实现

在应用的Controller实现文件的- (void)viewDidLoad方法中实现如下代码

1. 开发者初始化PDRCore句柄。

2. 设置指定的View为HTML5 SDK的父View,用于显示HTML5 SDK的页面

3. 调用PDRCore句柄的start接口启动应用,HTML5 Runtime将会根据用户配置的control.xml文件指定的APPID启动指定的应用。

#import "DcViewController.h"

#import "PDRCore.h"

@implementation ViewController

- (void)viewDidLoad

{

[super viewDidLoad]

PDRCore* pCoreHandle = [PDRCore Instance]

[pCoreHandle setContainerView:self.view]

[pCoreHandle start]

}

4 导入应用并配置

4.1 添加应用

在离线打包之前,用户需要将已经开发完成的HTML5 应用导入到Xcode工程中。

4.1.1 应用导入

需要将开发完成的HTML5 应用拷贝到Pandora/apps/[appid]/www目录下。

4.1.2 manifes.json文件编写

请参考manifest.json 文件配置指导手册

4.2 配置应用的插件功能

开发者需要将html5 SDK里的PandoraAPI.bundle引入到开发中的工程中。开发者如开发了HTML5 扩展插件,需要修改PandoraAPI.bundle下的WebFeature.plist文件,在文件中添加扩展插件JS类名和原生类名的对应关系。

5 添加Control.xml

在工程中创建文件control.xml 文件,control.xml文件用来指定默认启动应用的APPID。

Control.xml文件放在工程的资源目录下即可。

<msc debug="true" version="0.1.0.0" >

<apps>

<app appid="HelloH5" appver="1.0" />

</apps>

</msc>

6 常用类说明

PDRCore

常用接口说明:

(PDRCore*)Instance

获取Core单例对象

返回值:

PDRCore 单例的PDRCore对象

- (int)setAppsRunPath:(NSString*)workPath

设置应用运行时目录,应用运行时产生的文件在该目录下生成,当应用 runmode为liberate时将把资源拷贝到该目录

参数说明:

workPath 应用运行时目录

返回值:

int 0 成功

- (int)setAppsInstallPath:(NSString*)installPath

设置runtime应用的安装目录,该地址为安装包中携带的应用资源位置

参数说明:

installPath 应用的安装目录

返回值:

int 0 成功

- (void)setInnerVersion:(NSString*)innerVersion

设置HTML5 SDK运行版本

参数说明:

innerVersion HTML5 SDK运行版本号

- (int)setDocumethPath:(NSString*)documentPath

设置HTML5 SDK文档目录

参数说明:

documentPath 应用的文档目录

返回值:

int 0 成功

- (int)setDownloadPath:(NSString*)downlaodPath

设置runtime下载目录

参数说明:

downloadPath 应用下载文件的路径

返回值:

int 0 成功

- (int)setAutoStartAppid:(NSString*)appid

设置runtiem启动时自动运行的APP

参数说明:

appid 默认启动应用的APPID

返回值:

int 0 成功

- (int)setContainerView:(UIView*)containerView

设置runtime根视图的父亲View

参数说明:

containerView 要显示HTML5 SDK的父View

返回值:

int 0 成功

- (int)setApp:(NSString*)appid documentPath:(NSString*)doucmentPath

设置指定app的文档目录

参数说明:

appid 要设置的appid

doucmentPath 要设置的路径

返回值:

int 0 成功

- (int)regPluginWithName:(NSString*)pluginName

impClassName:(NSString*)impClassName

type:(PDRExendPluginType)pluginType

javaScript:(NSString*)javaScript

注册第三方扩展的HTML5 插件

参数说明:

pluginName 插件名称JS文件中定义的名字

impClassName 插件对应的实现类名

pluginType 插件类型 详情:PDRExendPluginType

javaScript js实现 为javascript文本

返回值:

int 0 成功

- (int)start

正常启动runtime,使用改方法启动runtime具有全部功能,包括具有应用管理、窗口管理、插件管理、权限管理、资源管理等功能

- (int)startAsWebClient

启动runtime,使用该方法启动的runtime不具有应用管理窗口管理功能,当需要显示页面时,需要自己创建PDRCoreAppFrame

PDRCoreAppFrame

常用接口说明

- (PDRCoreAppFrame*)initWithId:(NSString*)frameID loadURL:(NSString*)pagePath frame:(CGRect)frame

创建runtime页面

参数说明:

frameID 页面标示

pagePath 页面地址 支持http:// file:// 本地地址

frame 页面位置

@property(nonatomic, readonly)UIWebView *webView

应用页面的WebView对象

webView显示不了图片,那肯定是html中的图片引入写错了,WebView(网络视图)能加载显示网页,可以将其视为一个浏览器。它使用了WebKit渲染引擎加载显示网页。如果显示有问题,建议按以下方式去实现:第一种方法的步骤:1.在要Activity中实例化WebView组件:WebView webView = new WebView(this)2.调用WebView的loadUrl()方法,设置WevView要显示的网页: 互联网用:webView.loadUrl("") 本地文件用:webView.loadUrl("file:///android_asset/XX.html")本地文件存放在:assets 文件中3.调用Activity的setContentView( )方法来显示网页视图4.用WebView点链接看了很多页以后为了让WebView支持回退功能,需要覆盖覆盖Activity类的onKeyDown()方法,如果不做任何处理,点击系统回退剪键,整个浏览器会调用finish()而结束自身,而不是回退到上一页面5.需要在AndroidManifest.xml文件中添加权限,否则会出现Web page not available错误。 <uses-permission android:name="android.permission.INTERNET" />第二种方法的步骤:1、在布局文件中声明WebView2、在Activity中实例化WebView3、调用WebView的loadUrl( )方法,设置WevView要显示的网页4、为了让WebView能够响应超链接功能,调用setWebViewClient( )方法,设置 WebView视图5、用WebView点链接看了很多页以后为了让WebView支持回退功能,需要覆盖覆盖Activity类的onKeyDown()方法,如果不做任何处理,点击系统回退剪键,整个浏览器会调用finish()而结束自身,而不是回退到上一页面6、需要在AndroidManifest.xml文件中添加权限,否则出现Web page not available错误。<uses-permission android:name="android.permission.INTERNET"/>


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/7952590.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-11
下一篇2023-04-11

发表评论

登录后才能评论

评论列表(0条)

    保存