TOWebViewController
为 iOS 应用提供内联网页浏览功能
TOWebViewController
是一个开源的 UIViewController
子类,旨在让应用快速向用户展示网页内容,而无需将它们转向 Safari。从零开始设计 TOWebViewController
以便于集成到现有项目中,利用 iOS 的最新功能,并可选择(显著地)与 iOS 的早期版本向后兼容。
特性
- 由
UIWebView
支持,向后兼容到 iOS 5。 - 完整的导航按钮集合,包括后退、向前、刷新按钮以及可选的分享/操作按钮。
- 检测是否模态推送或通过导航控制器推送,并相应地调整用户界面。
- 页面加载进度条(使用 ninjinkun 的出色算法)。
- 当用户旋转设备时,播放平滑、优雅的旋转动画。
- 图标由 CoreGraphics 生成(即,不使用任何不必要的图像资源)。
- 与 iOS 8 尺寸类兼容,包括 iPad Air 2、iPad mini 4 和 iPad Pro 的分屏。
- 1Password自动密码输入扩展支持。
- (待办)一个合适的委托系统,允许外部类与这个控制器交互。
- (待办)基本的导航历史记录,在长按返回/前进按钮时显示。
- (待办)一个合适的多余发生错误/未连接到互联网的对话框视图。
示例
TOWebViewController
非常智能,能够判断自己是作为模态弹出显示,还是被推送到UINavigationController
中,并相应地更改其按钮布局。
作为模态对话框显示
作为模态弹出显示时,仍需要创建一个父UINavigationController
以使按钮正确显示。
TOWebViewController *webViewController = [[TOWebViewController alloc] initWithURL:[NSURL URLWithString:@"http://www.apple.com/"]];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:webViewController];
[self presentViewController:navigationController animated:YES completion:nil];
UINavigationController
推送到TOWebViewController *webViewController = [[TOWebViewController alloc] initWithURL:[NSURL URLWithString:@"http://www.apple.com/"]];
[self.navigationController pushViewController:webViewController animated:YES];
系统要求
iOS 5.0 或更高版本
安装
作为CocoaPods依赖
将以下内容添加到您的Podfile中
pod 'TOWebViewController'
作为Carthage依赖
将以下内容添加到您的Cartfile中
github "https://github.com/TimOliver/TOWebViewController"
手动安装
从GitHub下载此项目,将名为'TOWebViewController'的子文件夹移动到您的项目文件夹中,并将其拖动到您的Xcode项目中。
之后,您需要将以下系统框架链接到您的项目中
- QuartzCore.framework
- CoreGraphics.framework
- MessageUI.framework
- Twitter.framework
WKWebView
?
为何不采用虽然WKWebView
看起来比UIWebView
更漂亮,但它有几个严重的缺点。最重要的是,在WKWebView
内部创建的会话和cookie数据无法被其余的Foundation框架访问。由于构建此项目的宏伟目标之一是允许用户登录web账户,并随后使用该会话下载文件,这是无法接受的。
在未来的任何时刻,TOWebViewController
都不会采用WKWebView
。如果您想要一个同样功能但使用WKWebView
的替代视图控制器,请尝试使用DZNWebViewController!
SFSafariViewController
呢?
关于从iOS 9开始,苹果现在提供了一个类似功能的内置网页视图控制器,名为SFSafariViewController
。如果您的应用程序只针对iOS 9,并且完全满足您的要求,那么强烈建议您采用SFSafariViewController
,而不是使用TOWebViewController
。
但是,如果您仍然针对较低的iOS版本,或者需要更多比SFSafariViewController
提供的更可定制的功能,那么TOWebViewController
仍然可以作为一个可行的替代方案。
致谢
TOWebViewController
最初是由Tim Oliver制作的,用作iComics的组件,iComics是一款iOS漫画阅读应用程序。
还要感谢TOWebViewController
日益增长的贡献者!
iPad Air 2和iPhone 6s Plus设备模型由Pixeden制作。
许可
TOWebViewController遵循MIT许可协议。更多信息,请参见LICENSE文件。