UIKit框架-高级控件Swift版本: 10.UIWebView方法/属性详解

前面我们已经讲解完了 UINavigationController 的一些常用属性以及方法, 现在让我们来看看一个关于网络的 UIWebView.


1.UIWebView的常用属性

// 1.设置 UIWebView 的代理对象
var delegate: UIWebViewDelegate?

// 2.获取 UIWebView 的 UIScrollView 属性
var scrollView: UIScrollView { get }

// 3.获取 UIWebView 的网络请求
var request: NSURLRequest? { get }

// 4.获取 UIWebView 是否在接收数据的时候可以退后一步
var canGoBack: Bool { get }

// 5.获取 UIWebView 是否在接收数据的时候可以前进一步
var canGoForward: Bool { get }

// 6.获取 UIWebView 是否接受完数据
var loading: Bool { get }

// 7.设置 UIWebView 接收的数据是否可以通过手势来调整页面内容大小
var scalesPageToFit: Bool

// 8.设置 UIWebView 接收的数据是什么类型
var dataDetectorTypes: UIDataDetectorTypes

// 9.设置 UIWebView 内是否可以回放媒体
var allowsInlineMediaPlayback: Bool

// 10.设置 UIWebView 中的 HTML5 视频是否自动播放(默认是True)
var mediaPlaybackRequiresUserAction: Bool

// 11.设置 UIWebView 是否可以使用 Air 播放(默认是True)
var mediaPlaybackAllowsAirPlay: Bool

// 12.设置 UIWebView 是否使用同步加载(默认是False)
var suppressesIncrementalRendering: Bool

// 13.设置 UIWebView 在点击视图或者元素时是否显示键盘(默认是True)
var keyboardDisplayRequiresUserAction: Bool

// 14.设置 UIWebView 的分页模式
var paginationMode: UIWebPaginationMode

// 15.设置 UIWebView 的分页打破模式
var paginationBreakingMode: UIWebPaginationBreakingMode

// 16.设置 UIWebView 的分页长度
var pageLength: CGFloat

// 17.设置 UIWebView 之间的页面宽度
var gapBetweenPages: CGFloat

// 18.获取 UIWebView 的页面数量
var pageCount: Int { get }

常用类型

// 1.获取 UIWebView 的数据类型
struct UIDataDetectorTypes : RawOptionSetType {
    init(_ rawValue: UInt)
    init(rawValue: UInt)

    static var PhoneNumber: UIDataDetectorTypes { get }
    static var Link: UIDataDetectorTypes { get }
    static var Address: UIDataDetectorTypes { get }
    static var CalendarEvent: UIDataDetectorTypes { get }
    static var None: UIDataDetectorTypes { get }
    static var All: UIDataDetectorTypes { get }
}

// 2.设置 UIWebView 的 Navigation 类型
enum UIWebViewNavigationType : Int {
    case LinkClicked
    case FormSubmitted
    case BackForward
    case Reload
    case FormResubmitted
    case Other
}


// 3.设置 UIWebView 的分页样式
enum UIWebPaginationMode : Int {
    case Unpaginated
    case LeftToRight
    case TopToBottom
    case BottomToTop
    case RightToLeft
}

// 4.设置 UIWebView 打破分页样式的样式
enum UIWebPaginationBreakingMode : Int {
    case Page
    case Column
}

2.UIWebView的代理方法

// 1.该方法是用来设置是否在 UIWebView 加载之前发送一个请求
    optional func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool

// 2.该方法是在 UIWebView 在开发加载时调用
    optional func webViewDidStartLoad(webView: UIWebView)

// 3.该方法是在 UIWebView 加载完之后才调用
    optional func webViewDidFinishLoad(webView: UIWebView)

// 4.该方法是在 UIWebView 请求失败的时候调用
    optional func webView(webView: UIWebView, didFailLoadWithError error: NSError)

3.代码示范

首先我们要使用storyBoard布局界面
1

关联控件
2

遵守代理协议

class ViewController: UIViewController, UIWebViewDelegate {
}

自定义UIWebVIew

    func myWebView() {

        // 1.获取 UIWebView 的 UIScrollView 属性
        let webScroll = webView.scrollView
        println("webScroll = \(webScroll)")

        // 2.获取 UIWebView 的 request 属性
        let webRequest = webView.request
        println("webRequest = \(webRequest)")

        // 3.获取 UIWebView 是否在接收数据的时候可以退后一步
        let webCanBack = webView.canGoBack
        println("webCanBack = \(webCanBack)")

        // 4.获取 UIWebView 是否在接收数据的时候可以前进一步
        let webCanGo = webView.canGoForward
        println("webCanGo = \(webCanGo)")

        // 5.获取 UIWebVIew 是否接受完数据
        let webLoading = webView.loading
        println("webLoading = \(webLoading)")

        // 6.设置 UIWebView 接收的数据是否可以通过手势来调整页面内容大小
        webView.scalesPageToFit = true

        // 7.设置 UIWebView 接收到得数据是什么类型的
        webView.dataDetectorTypes = UIDataDetectorTypes.All

        // 8.设置 UIWebView 内是否可以回放媒体
        webView.allowsInlineMediaPlayback = true

        // 9.设置 UIWebView 中的 HTML5 视频是否自动播放
        webView.mediaPlaybackRequiresUserAction = true

        // 10.设置 UIWebView 是否可以使用 Air 播放
        webView.mediaPlaybackAllowsAirPlay = true

        // 11.设置 UIWebView 是否使用同步加载(默认是False)
        webView.suppressesIncrementalRendering = false

        // 12.设置 UIWebView 在点击视图或者元素时是否显示键盘(默认是True)
        webView.keyboardDisplayRequiresUserAction = true

        // 13.设置 UIWebView 的分页模式
        webView.paginationMode = UIWebPaginationMode.RightToLeft

        // 14.设置 UIWebView 的分页打破模式
        webView.paginationBreakingMode = UIWebPaginationBreakingMode.Column

        // 15.设置 UIWebView 的分页长度
        webView.pageLength = 400

        // 16.设置 UIWebView 每个分页之间的宽度
        webView.gapBetweenPages = 100

        // 17.获取 UIWebView 的分页数量
        let webViewPageCount = webView.pageCount
        println(webViewPageCount)

        // 18.设置 UIWebView 的代理对象
        webView.delegate = self

        // 19.发送网络请求
        var url:NSURL = NSURL(string:"http://www.baidu.com")!
        var request:NSURLRequest = NSURLRequest(URL:url)
        webView.loadRequest(request)
    }

实现代理方法

    // 1.该方法是用来设置是否在 UIWebView 加载之前发送一个请求
    func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
        return true
    }

    // 2.该方法是在 UIWebView 在开发加载时调用
    func webViewDidStartLoad(webView: UIWebView) {
        println("开始加载")
    }

    // 3.该方法是在 UIWebView 加载完之后才调用
    func webViewDidFinishLoad(webView: UIWebView) {
        println("加载完成")
    }

    // 4.该方法是在 UIWebView 请求失败的时候调用
    func webView(webView: UIWebView, didFailLoadWithError error: NSError) {
        println("加载失败")
    }

在 ViewDidLoad 方法中实现

    override func viewDidLoad() {
        super.viewDidLoad()
        self.myWebView()
    }

PS: UIWebView 继承与 UIView, 并且遵守了 UIScrollViewDelegate 协议, 所以它可以使用里面的方法和属性.


好了, 这次我们就讲到这里, 下次我们继续~~

转载于:https://www.cnblogs.com/iOSCain/p/4529339.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【课程特点】1、231节大容量课程:包含了SwiftUI的大部分知识点,详细讲解SwiftUI的方方面面;2、15个超级精彩的实例:包含美食、理财、健身、教育、电子商务等各行业的App实例;3、创新的教学模式:手把手教您SwiftUI用户界面开发技术,一看就懂,一学就会;4、贴心的操作提示:让您的眼睛始终处于操作的焦点位置,不用再满屏找光标;5、语言简洁精练:瞄准问题的核心所在,减少对思维的干扰,并节省您宝贵的时间;6、视频短小精悍:即方便于您的学习和记忆,也方便日后对功能的检索;7、齐全的学习资料:提供所有课程的源码,在Xcode 11 + iOS 13环境下测试通过; 更好的应用,更少的代码!SwiftUI是苹果主推的下一代用户界面搭建技术,具有声明式语法、实时生成界面预览等特性,可以为苹果手机、苹果平板、苹果电脑、苹果电视、苹果手表五个平台搭建统一的用户界面。SwiftUI是一种创新、简单的iOS开发中的界面布局方案,可以通过Swift语言的强大功能,在所有的Apple平台上快速构建用户界面。 仅使用一组工具和API为任何Apple设备构建用户界面。SwiftUI具有易于阅读和自然编写的声明式Swift语法,可与新的Xcode设计工具无缝协作,使您的代码和设计**同步。自动支持动态类型、暗黑模式、本地化和可访问性,意味着您的**行SwiftUI代码已经是您编写过的非常强大的UI代码了。 

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值