TOWebContentViewController
TOWebContentViewController
是一个类,旨在允许快速呈现 HTML,无论是从本地文件还是在线。
它并不旨在成为网页浏览器,而是更倾向于在应用内部显示特定的信息,在那里投入资源实现等效的原生 UI 不太值得。例如,显示隐私政策或开源认可列表。
视图控制器还提供了一些额外的优势,例如能够动态预设背景颜色,并使用 mustache 模板引擎动态注入信息。
特性
- 使用
WKWebView
来显示 HTML 内容和图片,无论是从磁盘还是从网站。 - 有意禁止'后退'或'前进'导航,而是将内容视为应用的组件。
- 点击链接将被捕获,并且可以动态处理,或由视图控制器自动处理。
- 对于本地 HTML 内容,允许从应用程序注入动态信息(例如,应用版本、当前年份等)
- 如果 HTML 中存在,可以提取 HTML 内容的背景颜色,并在加载时将其设置为视图控制器视图的背景。
系统要求
iOS 9.0 和更高版本。
安装
作为 CocoaPods 依赖项
将以下内容添加到您的 Podfile 中
pod 'TOWebContentViewController
手动安装
将 TOWebContentViewController
文件夹复制到您的 Xcode 项目中。
TOWebContentViewController
是一个 Objective-C 项目,但它已被编写为能够在 Swift 中正常工作。如果您在 Swift 项目中使用它,请勿忘记将其包含在 Objective-C 桥接头中。
示例
对于磁盘内容,建议您将所有 HTML/CSS 放在一个文件夹中,并将其作为 'Group Reference' 导入 Xcode(即在 Xcode 导航器中使用蓝色图标)(截图)
Hello World 示例
// Get resources folder URL
let resourcesURL = Bundle.main.resourceURL!
let baseURL = resourcesURL.appendingPathComponent("HTML")
let fileURL = baseURL.appendingPathComponent("about.html")
// Create the web content view controller
let webContentController = WebContentViewController(fileURL: fileURL, baseURL: baseURL)
// Present the view controller however way you need.
navigationController.push(webContentViewController, animated: true)
使用模板系统
如果加载本地 HTML 文件,已经实现了基于 mustache 的基本模板系统,以便将来自您的应用程序的动态内容注入到 HTML 中。这对于显示当前的 app 版本或构建号非常有用,甚至可用于更复杂的事情,如交换 CSS 文件。
要使用模板系统,只需在您的 HTML 中插入模板标签,然后指定需要替换的内容。
let myHTMLString = "<html><body>{{Greeting}}</body></html>"
let vc = WebContentViewController(htmlString: myHTMLString, baseURL: nil)
vc.templateTags = ["Greeting": "Hello World!"]
显示时,{{Greeting}}
将被替换为 "Hello World!"。
您可以在 templateTags
中设置自己的自定义值,但视图控制器还创建了一些默认值
{{AppName}}
- 主束中应用程序的短名称(例如 'iComics'){{AppVersion}}
- 此版本应用程序的版本号(例如 '1.4'){{AppBuildNumber}}
- 此版本应用程序的构建号(例如 '1432'){{AppCurrentYear}}
- 设备上的当前年份(例如 '2018')
设置背景颜色
在网页视图开始加载之前,您可以动态设置视图控制器的背景颜色,使其与网页内容相同,从而使外观看起来更符合整个应用程序的风格。
要自动设置颜色,请将名为 data-bgcolor=""
的标签放置在您的HTML文件中的任何位置。
<html>
<body data-bgcolor="#eeeeee"></body>
</html>
请注意,您必须使用6位的十六进制代码才能使其工作。
来源
TOWebContentViewController
最初是由Tim Oliver为其创建,作为iComics(iOS漫画阅读应用程序组件)的一部分。
截图中所用的iOS设备模型由Pixeden创建。
许可
TOWebContentViewController遵循MIT许可证,请参阅LICENSE文件。