18.UIWebView
2016-03-01 20:15
369 查看
UIWebView
UIWebView看名字就知道是可以加载web页面的控件, 下面我们学习如何使用它1. UIWebView的创建
let webView = UIWebView(frame: self.view.bounds) webView.loadRequest(NSURLRequest(URL: NSURL(string: "http://www.csdn.net/")!)) webView.paginationMode = .LeftToRight webView.scalesPageToFit = true self.view.addSubview(webView)
注意在iOS9上的系统中要在info.plist中设置一下, 具体参考UIImageView中加载网络图片的部分
运行程序:
上面的代码中我们设置了加载csdn主页,并设置页面缩放以适应界面
2. UIWebView的属性详解
// 代理 unowned(unsafe) public var delegate: UIWebViewDelegate? @available(iOS 5.0, *) // 获取scrollView public var scrollView: UIScrollView { get } // 获取请求 public var request: NSURLRequest? { get } // 是否可上一页 public var canGoBack: Bool { get } // 是否可下一页 public var canGoForward: Bool { get } // 是否正在加载 public var loading: Bool { get } // 是否缩放页面以适应界面 public var scalesPageToFit: Bool // 数据类型检测,和UITextView中一样 @available(iOS 3.0, *) public var dataDetectorTypes: UIDataDetectorTypes // 使用内置html5播放视频还是使用本地的播放器全屏播放, iPhone Safari默认为false, iPad Safari默认为true @available(iOS 4.0, *) public var allowsInlineMediaPlayback: Bool // 是否由用户来启动播放, 默认iPhone 和 iPad Safari都为true @available(iOS 4.0, *) public var mediaPlaybackRequiresUserAction: Bool // 是否允许AirPlay, 默认iPhone 和 iPad Safari都为true @available(iOS 5.0, *) public var mediaPlaybackAllowsAirPlay: Bool // 是否将内容加载到内存中再渲染, 默认iPhone 和 iPad Safari都为false @available(iOS 6.0, *) public var suppressesIncrementalRendering: Bool // 用户是否点击输入元素来显示键盘, 默认为true @available(iOS 6.0, *) public var keyboardDisplayRequiresUserAction: Bool // 自动分页模式,具体查看下面的内容 @available(iOS 7.0, *) public var paginationMode: UIWebPaginationMode // CSS加载方式 @available(iOS 7.0, *) public var paginationBreakingMode: UIWebPaginationBreakingMode // 页长 @available(iOS 7.0, *) public var pageLength: CGFloat // 页间距 @available(iOS 7.0, *) public var gapBetweenPages: CGFloat // 页数 @available(iOS 7.0, *) public var pageCount: Int { get } // 是否允许画中画 @available(iOS 9.0, *) public var allowsPictureInPictureMediaPlayback: Bool // 是否允许链接预览, 默认为false @available(iOS 9.0, *) public var allowsLinkPreview: Bool
分页模式:
多余超出部分 public enum UIWebPaginationMode : Int { case Unpaginated // 不分页 case LeftToRight // 由左到右 case TopToBottom // 由上到下 case BottomToTop // 由下到上 case RightToLeft // 由右到左 }
CSS加载方式:
public enum UIWebPaginationBreakingMode : Int { case Page // 页 case Column // 列 }
3. UIWebView的方法
// 加载请求的3种方式 public func loadRequest(request: NSURLRequest) public func loadHTMLString(string: String, baseURL: NSURL?) public func loadData(data: NSData, MIMEType: String, textEncodingName: String, baseURL: NSURL) // 重新加载 public func reload() // 停止加载 public func stopLoading() // 上一页 public func goBack() // 下一页 public func goForward() // 执行js代码 public func stringByEvaluatingJavaScriptFromString(script: String) -> String?
4. UIWebView的代理
我们查看UIWebViewDelegate的定义public protocol UIWebViewDelegate : NSObjectProtocol { // 开始加载之前调用 @available(iOS 2.0, *) optional public func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool // 开始加载时调用 @available(iOS 2.0, *) optional public func webViewDidStartLoad(webView: UIWebView) // 加载完成时调用 @available(iOS 2.0, *) optional public func webViewDidFinishLoad(webView: UIWebView) // 加载出现错误时调用 @available(iOS 2.0, *) optional public func webView(webView: UIWebView, didFailLoadWithError error: NSError?) }
5.完整代码
特别说明一下, 对于app中经常变动的部分, 用UIWebView是非常有用的, 像p2p行业, 基本上个把星期就推出一个新的活动, 让做web前端的兄弟把活动页写好, 后端的兄弟将内容放到约定好的地址,app中用UIWebView加载一下即可, 这样就不用每次出活动都更新一版了, 事实上你也不可能那么及时, app审核也要一个星期, 要是后端的兄弟在没有协商的情况下就放了一些内容(有次审核的那天, 后端的哥们上了个抽奖的转盘,奖品还有iPhone, 还没有告诉我们 ), 结果被无情的审核不通过,好了扯远了.下面是完成代码:
import UIKit
class ViewController12: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let webView = UIWebView(frame: self.view.bounds) webView.loadRequest(NSURLRequest(URL: NSURL(string: "http://www.csdn.net/")!)) webView.paginationMode = .LeftToRight webView.scalesPageToFit = true self.view.addSubview(webView)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
相关文章推荐
- Apple Swift学习教程
- 介绍 Fedora 上的 Swift
- iOS开发之路--微博“更多”页面
- Swift中实现点击、双击、捏、旋转、拖动、划动、长按手势的类和方法介绍
- Swift编程中的泛型解析
- Swift中定义二维数组的方法及遍历方法示例
- 简单分析Swift语言的一些基本特征
- Swift与C语言指针结合使用实例
- Swift心得笔记之控制流
- 用Swift构建一个简单的iOS邮件应用的方法
- 苹果公司推出的新编程语言Swift简介和入门教程
- iOS开发之路--微博骨架搭建
- iOS开发使用JSON解析网络数据
- IOS开发代码分享之获取启动画面图片的string
- iOS开发使用XML解析网络数据
- IOS中UIWebView的使用详解
- IOS之UIWebView的使用(基本知识)
- 探讨Swift数组和字典
- Swift中的指针操作和使用详细介绍